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. Nom : message erreur.png
Affichages : 1739
Taille : 46,5 Ko

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 : 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
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
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...