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
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
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" <jean-claude.mansion@wanadoo.fr> wrote in message
news:1475e01c41bef$b83dd450$a001280a@phx.gbl...
Salut ZOURY
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
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 :
- 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
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 :
- 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
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 :
- 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