Probleme de validation dans un formulaire

Fermé
maniani - 17 août 2004 à 09:46
 AZE - 30 déc. 2004 à 08:49
salut les amis

j'ai crée un formulaire contenant un certains nombre de zonz de texe(controle si vous voulez) parmis ces controles il ya un qui s'appelle command et bouton de commande
je veux executer un petit programme qui verifie si le valeur du contenu du controle command exist dans une table appelé t-test
si la valeur command exist dans la table je ferme le formulaire(forù1) si nom j'ajoute la valeur du controle cammand à la table
voici le programme:
dim rst as DAO.RECORDSET
SET RST=CURRENTDB.RECORDSETS("t-test",db_open_table)
rst.findfirst "commande=Me!command"
if rst.nomatch= true then
rst.addnew
rst("commande")=me!command
...
else
docmd.close forms "monformulaire"
end if
...
commande est un champs de la table t-test
à la line :rst.finfirst"commande=me!command" une erreur se produit
aider moi

4 réponses

cherche dans l'AID D'access
0
Bonjour,
ton erreur vient peut être du fait que tu passes ta variable dans les guillemets alors qu'il faut la sortir (en l'entourant de cotes) :
rst.findfirst "commande='" & Me!command & "'"

Mais pourquoi tu ne passerais pas plutôt par une requête de sélection SQL genre :
SELECT * FROM tatable WHERE champs = '" & Me!Command & "'

Et ensuite du testes si tu récupères une valeur ou non :
If rs.RecordCount <> 0 Then ... (quelque chose du genre).

Fanny
0
merci beaucoup
je vais essayé ton code
à propos j'ai tjours des problème de ce genre càd avec ' " & je sais mes errurs vient de ceci
si tu peux m'expiquer le principe
merci beaucoup
0
Fanny > maniani
17 août 2004 à 11:58
Bon, je vais essayer de t'expliquer :p (je sais pas si je vais être assez claire) :

requête sql toute bête :
SELECT * FROM tatable WHERE prenom = 'Fanny'
SELECT * FROM tatable WHERE age = 22

Comme tu peux le voir, il faut mettre les chaînes de caractères entre cotes (apostrophes), et les chiffres sans rien.

Donc quand tu veux concaténer une variable (contenant la valeur de comparaison pour ton champ) dans une chaîne SQL, il faut que tu fasses :

Si c'est une chaîne de caractère :
maVariable = "Fanny"
requete = "SELECT * FROM tatable WHERE prenom = ' " & maVariable & " ' "

(ici, j'ai mis des espaces pour bien visualiser les ' mais il ne faut pas les mettre ;) )

Si c'est du numérique, pas de cotes :
maVariable = 22
requete = "SELECT * FROM tatable WHERE prenom = " & maVariable


J'espère que cette explication est compréhensible :)
Si elle ne l'est pas, je veux bien retenter une autre façon d'expliquer ;)

Fanny
0
maniani > Fanny
17 août 2004 à 12:15
merci

je vais reveni au probleme des " ' &

seulement le truc que tu ma conseillé n'a pas marché
voila ce que je reçois comme message:
type de données incompatible dans l'expression du critère
le code que j'ai utilise est : rst.findfirst"commande=" ' & me!command & " ' ( espace seulement pour te visualiser ce que j'ai fais)
je vais essayer avec les nouveau régles que tu m'a donné
0
maniani > Fanny
17 août 2004 à 12:39
bonne nouvelle fany

merci pour ton aide

alors j'ai utilisé tes conseilles concernant l'utilastio de ' " & et j'ai reussi:

au début j'ai fait ceci:
set rst = currentdb.openrecordset("matable",db_open_table)
rst.findfirst"command="&me!command
j'ai reçu l'erreur suivante: opératio non autorisée pour ce type d'objet
j'ai chané db_open_table avec db_open_dynaset
et ça marche
pouvez vous m'expliquer pour quoi ça n'a pas marché avec db_open_table
merci d'avance
0
Fanny > maniani
17 août 2004 à 14:01
Je ne sais pas. Moi j'ai toujours utilisé db_open_dynaset, mais sans savoir réellement pourquoi :p

En fait je pense que db_open_table te donne un objet recordset de type table sur lequel il n'est pas possible de travailler, de faire des recherches.
Et comme tu fais un FindFirst, je suppose que c'est pour cela qu'il faut utiliser db_open_dynaset, qui te permet de manipuler ce jeu d'enregistrements (recordset).

Fanny
0
Oui oui, je suis là (et on pourrait se tutoyer, c'est moins officiel ;) ).
0
ok

je vais essayer ton dernier code en effet hier j'étais en congé
0
Fanny > maniani
19 août 2004 à 16:11
N'oublie pas de me dire si cela a fonctionné :)
0
SALUT
0