OVH Cloud OVH Cloud

Urgence sur ADO

5 réponses
Avatar
JCM
Bonjour

je n'arrive pas =E0 me sortir de ce probleme :

J'ai une fonction qui active une requete

Public Function ExecSQLPC(MySqlPC As String, ByRef=20
ADOrstPC As ADODB.Recordset, ByRef ADOcnx As=20
ADODB.Connection) As Boolean
'Initialisation du RecordSet
If ADOrstPC.State <> adStateClosed Then ADOrstPC.Close
'Ouvre une transaction pour ne pas =E0 avoir =E0 r=E9aliser=20
de commit en fin de traitement
ADOcnx.BeginTrans
'Positionne le curseur c=F4t=E9 client
ADOrstPC.CursorLocation =3D adUseClient
'V=E9rifie que la connexion pass=E9e est bonne
Set ADOrstPC.ActiveConnection =3D ADOcnx
'On Error GoTo ErrHandle
'Ex=E9cute la requ=EAte
ADOrstPC.Open MySqlPC, ADOcnx
'Valide la transaction
'ADOcnxPC.CommitTrans
ExecSQLPC =3D True
Exit Function
'ErrHandle:
'ExecSQLPC =3D False
'MsgBox "ADOManager.ExecSQL:ErrHandle" & vbCr & vbCr &=20
Err.Description, vbCritical
End Function

Cela Beug sur la ligne : ADOrstPC.Open MySqlPC, ADOcnx
avec le message d'erreur : erreur de syntaxe dans=20
l'instruction INSERT INTO

Voici ma SQL :

Call ExecSQLPC("insert into " & TableName & " (zone, dep,=20
com) values('" & _
ADOrst("zone") & "', '" & ADOrstDEP("dep") & "', '" &=20
ADOrstDEP("com") & _
"')", ADOrstPC, ADOcnx)

Pouvez-vous m'aider dans cette prise de tete

Cordialement
JCM

5 réponses

Avatar
Zoury
Salut Jean-Claude! :O)

peux-tu poster nous la requête "compilé" :
'***
Debug.Print "insert into " & TableName & " (zone, dep, com) values('" &
ADOrst("zone") & "', '" & ADOrstDEP("dep") & "', '" & ADOrstDEP("com") &
"')", ADOrstPC, ADOcnx)
'***

et nous donné aussi le type de données des trois champs concerné?

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
JCM
Salut ZOURY

je t'envoi un ZIP sut Mail

Jean Claude
-----Message d'origine-----
Salut Jean-Claude! :O)

peux-tu poster nous la requête "compilé" :
'***
Debug.Print "insert into " & TableName & " (zone, dep,


com) values('" &
ADOrst("zone") & "', '" & ADOrstDEP("dep") & "', '" &


ADOrstDEP("com") &
"')", ADOrstPC, ADOcnx)
'***

et nous donné aussi le type de données des trois champs


concerné?

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/


.



Avatar
Zoury
il me manque la bd.. :OP

aussi peux-tu me dire quoi faire afin de testé la partie de code qui ne
fonctionne pas? où se trouve le problème? ton programme est aussi gros..
j'ai pas le temps de le fouiller de fond en comble. ;O)


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"JCM" wrote in message
news:1475e01c41bef$b83dd450$
Salut ZOURY

je t'envoi un ZIP sut Mail

Jean Claude
-----Message d'origine-----
Salut Jean-Claude! :O)

peux-tu poster nous la requête "compilé" :
'***
Debug.Print "insert into " & TableName & " (zone, dep,


com) values('" &
ADOrst("zone") & "', '" & ADOrstDEP("dep") & "', '" &


ADOrstDEP("com") &
"')", ADOrstPC, ADOcnx)
'***

et nous donné aussi le type de données des trois champs


concerné?

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/


.



Avatar
Antoun
Salut les gars !

J'entrevois plusieurs trucs qui me chiffonnent, mais je n'ai pas le
temps de tester où est exactement l'erreur :

- ça me semble un peu bizarre d'envoyer une requête Insert par
ADOrstPC.Open. Normalement le ADOrst.Open se limite au Select, les
requêtes-action se font plutôt en ADOcnx.Execute. Je pense que ton
erreur est là, mais je continue la liste de mes chiffonades.

- peut-il y avoir une apostrophe dans l'un des champs que tu insères ?
c'est une cause fréquente d'erreur de syntaxe SQL. Si ce genre de
surprise peut t'arriver, je te conseille :

Call ExecSQLPC("insert into " & TableName & " (zone, dep,
com) values('" & _
replace(ADOrst("zone"),"'","''") & "', '" &
replace(ADOrstDEP("dep"),"'","''") & "', '" &
replace(ADOrstDEP("com"),"'","''") & _
"')", ADOrstPC, ADOcnx)

- quel est ton SGBD ? certains n'acceptent pas INSERT INTO TOTO,
seulement INSERT TOTO

- pourquoi ouvrir une transaction si c'est pour une seule requête ? tu
dis que ça évite le Commit en fin de traitement, mais tu fais quand même
un Commit ??? ceci dit, je ne connais rien aux transaction :-(

- ton ADOrstPC.CursorLocation = adUseClient me laisse supposer que tu es
sur une base Access... Access accepte les transactions maintenant ???
(même remarque que ci-dessus)

- pourquoi diable transmettre un ADOrstPC si c'est pour le fermer sitôt
arrivé ? ce ne serait pas plus simple de déclarer un Static ADOrstPC
dans ta fonction, ou un Private ADOrstPC dans ton module ?

- dans ton Call..., tu prends un champ sur un ADOrst tout court et deux
autres sur un ADOrstDEP, a priori ça me semble louche, mais je ne
connais pas ton fonctionnement

- est-ce que par hasard le ADOrstPC ne serait pas le même que le ADOrst
ou le ADOrstDEP ? parce que si tu essaies de faire un INSERT d'après des
valeurs déjà en instance d'insertion, ça te fais vite des doublons de
clés que la base refuserait... pas d'erreur de syntaxe SQL cependant.




JCM a écrit:
Bonjour

je n'arrive pas à me sortir de ce probleme :

J'ai une fonction qui active une requete

Public Function ExecSQLPC(MySqlPC As String, ByRef
ADOrstPC As ADODB.Recordset, ByRef ADOcnx As
ADODB.Connection) As Boolean
'Initialisation du RecordSet
If ADOrstPC.State <> adStateClosed Then ADOrstPC.Close
'Ouvre une transaction pour ne pas à avoir à réaliser
de commit en fin de traitement
ADOcnx.BeginTrans
'Positionne le curseur côté client
ADOrstPC.CursorLocation = adUseClient
'Vérifie que la connexion passée est bonne
Set ADOrstPC.ActiveConnection = ADOcnx
'On Error GoTo ErrHandle
'Exécute la requête
ADOrstPC.Open MySqlPC, ADOcnx
'Valide la transaction
'ADOcnxPC.CommitTrans
ExecSQLPC = True
Exit Function
'ErrHandle:
'ExecSQLPC = False
'MsgBox "ADOManager.ExecSQL:ErrHandle" & vbCr & vbCr &
Err.Description, vbCritical
End Function

Cela Beug sur la ligne : ADOrstPC.Open MySqlPC, ADOcnx
avec le message d'erreur : erreur de syntaxe dans
l'instruction INSERT INTO

Voici ma SQL :

Call ExecSQLPC("insert into " & TableName & " (zone, dep,
com) values('" & _
ADOrst("zone") & "', '" & ADOrstDEP("dep") & "', '" &
ADOrstDEP("com") & _
"')", ADOrstPC, ADOcnx)

Pouvez-vous m'aider dans cette prise de tete

Cordialement
JCM



Avatar
JCM
Salut ZOURY

je te joins la BD en ZIP et la partie de code qui ne
fonctionne pas par mail

Cordialement
Jean Claude
-----Message d'origine-----
il me manque la bd.. :OP

aussi peux-tu me dire quoi faire afin de testé la partie


de code qui ne
fonctionne pas? où se trouve le problème? ton programme


est aussi gros..
j'ai pas le temps de le fouiller de fond en comble. ;O)


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/
"JCM" wrote in message
news:1475e01c41bef$b83dd450$
Salut ZOURY

je t'envoi un ZIP sut Mail

Jean Claude
-----Message d'origine-----
Salut Jean-Claude! :O)

peux-tu poster nous la requête "compilé" :
'***
Debug.Print "insert into " & TableName & " (zone, dep,


com) values('" &
ADOrst("zone") & "', '" & ADOrstDEP("dep") & "', '" &


ADOrstDEP("com") &
"')", ADOrstPC, ADOcnx)
'***

et nous donné aussi le type de données des trois champs


concerné?

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/


.





.