cs_piotr
Messages postés4Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention 1 août 2003
-
30 juil. 2003 à 16:44
cs_piotr
Messages postés4Date d'inscriptionvendredi 16 mai 2003StatutMembreDerniè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)
cs_piotr
Messages postés4Date d'inscriptionvendredi 16 mai 2003StatutMembreDerniè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 !
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 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
cs_piotr
Messages postés4Date d'inscriptionvendredi 16 mai 2003StatutMembreDerniè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.