Problème avec la méthode find des recordset ADODB

cs_piotr Messages postés 4 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 1 août 2003 - 30 juil. 2003 à 16:44
cs_piotr Messages postés 4 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 1 août 2003 - 1 août 2003 à 09:58
Bonjour...

J'utilise ADODB pour un accès à une base Accès.

J'ai écrit une fonction dont le rôle est de vérifier si un enregistrement existe et, le cas échéant, le crée. Cette fonction doit retourner l'id de l'enregistrement dans la table. Cet id est un numéro automatique génèré à chaque insertion.

voici le format de la table (très simple) :
----------------------------------
| id_domaine | nom_domaine |
------------------------------------

Pour ce faire, j'utilise la méthode find. Voici le code de ma fonction :

Private Function validerDomaine(nomDomaine As String, domaineRst As Recordset) As Integer 
'Fonction qui vérifie si le domaine "nomDomaine" existe et le créé le cas échéant. 
'renvoie l'id du domaine dans la base. 

'--------------------------- 
'Déclaration des variables : 
'--------------------------- 
Dim id_domaine As Integer       'id du domaine "nomDomaine" 

'---------------------- 
'Corps de la fonction : 
'---------------------- 
'initialisation du gestionnaire d'erreur 
On Error GoTo traiterErreur 

Call domaineRst.Find("nom_domaine=''" & nomDomaine & "''", 0, adSearchForward, 0) 
If domaineRst.EOF Then 
    Call domaineRst.AddNew("nom_Domaine", nomDomaine) 
    Call domaineRst.Update 
    Call domaineRst.Requery 
End If 

id_Domaine=domaineRst("id_Domaine") 

validerDomaine = id_domaine '-> on retourne l'id du domaine 

Exit Function 

'label de traitement des erreurs 
traiterErreur: 
    MsgBox ("Erreur " & Err.Number & " : " & Err.Description & " [" & Err.Source & "]") 
    validerDomaine = -1 
End Function 


Quand la table n'est pas vide, j'ai l'erreur suivante :

ADODB.Recordset error '800a0bb9' 

Les arguments sont de type incorrect, en dehors des limites autorisées ou en conflit les uns avec les autres. 


Je ne comprends pas où est l'erreur dans mon appel à find...

Je suis stagiaire et je fini mon stage dans deux jours alors si quelqu'un me sort cette épine du pied, je lui devrais un fière chandelle ... :big)

merci d'avance

~Pi0tr~

4 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
31 juil. 2003 à 00:15
Pourquoi mets-tu deux quote simple devant et derrière la valeur recherchée dans ta requête SQL ???
Nomdomaine = 'bidule' suffit.
Christophe R.
0
cs_piotr Messages postés 4 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 1 août 2003
31 juil. 2003 à 09:49
pour dire au compilo que ce ne sont pas des commentaires... mais tu as raison, pas besoin apparement... je viens de les enlever et ça à l'air de marcher... je vais tester ça de manière plus approfondie !

merci beaucoup ! :big)

~Pi0tr~
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
31 juil. 2003 à 22:34
Le compilateur ne peut pas prendre un quote pour un début de commentaire de fin de ligne içi puisqu'il est dans une valeur string, donc entre double quote. Ce sont les double quote justement que tu dois doubler si tu en veux un dans une chaine. Exemple :
"Ceci est une chaine avec UN quote ' dedand"
"Ceci est une chaine avec UN double quote "" dedans"
Si tu fais apparaitre ces deux chaine dans des textbox tu verrras cela :
Ceci est une chaine avec UN quote ' dedand
Ceci est une chaine avec UN double quote " dedans

Pour finir, c'est en langage C/C++ que le simple quote est le délimiteur de chaine, pas en VB. Donc en VB on double les double quote et en C, on met un anti-slash devant un simple quote

A++
Christophe R.
0
cs_piotr Messages postés 4 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 1 août 2003
1 août 2003 à 09:58
merci

en fait je code en java et c++ d'habitude... là j'ai attaqué vb parceque l'entreprise ds laquelle j'effectue mon stage n'a que ça...

En fait, j'ai mis ces deux simples quote sans me poser de question et j'ai même pas envisagé que ça puisse être la source de mon erreur... là c cool ça commence d'avancer à nouveau.

merci pour ton aide... :big) et @++

~Pi0tr~
0
Rejoignez-nous