ADODB : Plusieurs INSERT dans un seul CommandText ?
Bonjour,
Je cherche à pouvoir réaliser une suite de commandes SQL en une seule fois plutôt que de faire un command.Execute à chaque fois qu'il y a de commande SQL à faire.
Ou même : donner un fichier en entrée qui contient une suite de commandes SQL
Par exemple, aujourd'hui, j'ouvre un fichier qui contient un bon paquet d'INSERT, de DELETE, je récupère les requêtes ligne par ligne et pour chaque ligne je fais un cn.execute :
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.ConnectionString = "DSN=XX;UID=XX;PWD=XX;"
Open fichier For Input As #1
While Not EOF(1)
'récupération de la ligne en cours dans le fichier
Line Input #1, ligne
'si la ligne en cours n'est pas un commentaire on l'exécute
If InStr(1, ligne, "--") <> 1 Then
cn.Execute Replace(ligne, ";", "")
End If
Wend
Close #1Le code ci-dessus marche bien, mais j'aimerais optimiser en ne faisant qu'un seul cn.Execute comme suivant :
Sub testMultipleInsert()
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.ConnectionString = "DSN=XX;UID=XX;PWD=XXx;"
'Ouverture de la base de données
If cn.State <> adStateOpen Then
cn.Open
End If
Dim cmd As New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandType = adCmdText
Dim cmdText As String
'cmd.CommandText = "INSERT INTO TabA (Chp1,Chp2,...) VALUES ('Value1','Value2',...);"
cmdText = "INSERT INTO TabA (Chp1,Chp2,...) VALUES ('Value1','Value2',...);"
cmdText = cmdText + "DELETE FROM TableB WHERE ACCT_ID='0164732537';"
cmdText = cmdText + "INSERT INTO TabB (Chp1,Chp2,...) VALUES ('0164732537','Value2',...);"
cmd.CommandText = cmdText
cmd.Execute 'FAILS HERE
If cn.State = adStateOpen Then
cn.Close
End If
End SubEn ce faisant, j'ai une erreur au cmd.Execute :
Pouvez-vous m'aider à résoudre ceci ?
A moins que ce n'est pas possible et qu'il faille faire autant d' .Execute qu'il y a d'INSERT / DELETE ?
Pas de possibilité de passer un fichier contenant ces INSERT / DELETE séparés par des ';' ?
Merci beaucoup pour votre aide !!