1 pièce(s) jointe(s)
Executer une procédure SQL depuis VBA
Bonjour a tous,
Je cherche a executer une procédure SQL depuis VBA. Je tiens a préciser que je débute en SQL et un peu moins en VBA, donc exuser moi et corriger moi si je dis des bétises.
Le sujet a été traité plusieurs fois mais je ne comprends pas mon message d´erreur. Pièce jointe 276120
Je vais essayé d´être le plus précis possible:
1- J´ai un module de classe ADODBRD (code source Dysorthographie) avec des fonctions pour pour "jouer" avec ma connection
Je cherche a creer une fonction me permettant d´executer la procédure stockée en SQL
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Public Function OpenRecordSetParametre(Procedure As String, Param1 As String)
On Error Resume Next
If Connexion.State = 0 Then
OpenConnetion ' autre fonction permettant ouvrir connexion
End If
Set Cmd = CreateObject("ADODB.Command")
Cmd.ActiveConnection = Connexion
Cmd.CommandType = 4
Cmd.CommandText = Procedure
Set Prm1 = CreateObject("ADODB.Parameter")
Prm1.Value = Param1
Prm1.Name = "@MP"
Prm1.Type = 200
Prm1.Direction = 4
Prm1.Size = 15
Set OpenRecordSetParametre = Cmd.Execute
Set Cmd = Nothing
Set Prm1 = Nothing
If Err Then
MsgBox Err.Description
Set OpenRecordSetParametre = Nothing
End If
Err.Clear
On Error GoTo 0
End Function |
Ensuite j´appele ma fonction de la maniere suivante depuis un USF pour tester ma connection et pour tester mon recordset: (msg de connexion est: bon)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Private Sub CommandButton1_Click()
Dim Con As New ADODBRD 'nom de mon module de classe
Con.BASETYPE = SQLSERVER2005
Con.MonServer = "BLADELAB01"
Con.Database = "SBO_PORTUGAL_PRODUCCION"
Con.MonUser = "etiquetas"
Con.MonPassword = "francia"
Con.OpenConnetion
MsgBox Array("No bueno!", "Bueno !")(Abs(Con.OpenConnetion))
Set RS = Con.OpenRecordSetParametre("SBO_SP_LP_Comprometidos", "MP-00016-LP")
MsgBox Array("No bueno!", "Bueno !")(Abs(TypeName(RS) <> "Nothing"))
If Not RS Is Nothing Then RS.Close
Con.CloseConnection
Set RS = Nothing
End Sub |
A ce que j´ai compris de mon message d érreur il me dit que mon champs "@MP" n´est pas ajouté, et lorsque je mets ce parametre de ma fonction en commentaire dans ma fonction Prm1.Name = "@MP", bah j´ai le meme message d´erreur avec la synthaxe SQL cad: '@MP'
Ce qui me fait penser quer l´erreur pourrait provenir de mon script SQL, mais lrsque j´execute ma procedure depuis SQL cela fonctionne, de meme lorsque je fais un execut en excel depuis a ma base de onnées. Ce qui fait que je suis un perdu et pas d´idée... Je ne sais pas si je déclare mal ma variable en VBA ou alors si j´execute mal mon command...
Je remercie par avance toute forme aide ou toutes suggestions ou toutes idées...