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.
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
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'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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...
Partager