Bonjour,

Je cherche à executer une procédure stockée via ADO, cette procédure à un paramètre de sortie, mais pourtant ça ne fonctionne pas, j'ai un message d'erreur :'Précision non valide' et je ne comprends pas pourquoi, j'ai essayé de modifier les types, rajouter et enlever des options mais rien n'y fait, j'espère que quelqu'un pourra m'aider.

Code de la procédure:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
Create procedure dbo.proc1
(@SommeGen real output)
 
AS
Declare @SQLExe varchar(2000)
 
SET SQLExe='Select Sum(a.mt_Debit+a.mt_Credit) FROM '+user+'.TableUtilisateur_'+user+' as a'
 
EXEC(@SQLExe)
 
GO
La procédure a été testée et fonctionne bien

Maintenant le code ADO
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
 
Dim rc As Recordset
  Dim cnn As ADODB.Connection
  Dim Conn As String
  Dim cmdExeproc As ADODB.Command
  Dim SommeGEN As Variant
  Dim Prm As ADODB.Parameter
 
'Definition de la connexion ADO
Set cnn = New ADODB.Connection
Set cmdExeproc = New ADODB.Command
 
'Chaine de connexion ADO
Conn = "Provider=sqloledb; Data Source=Serveur; Initial Catalog=Base; User ID=User "
 
'Ouverture de la connexion
cnn.Open Conn
 
 
Set cmdExeproc.ActiveConnection = cnn
cmdExeproc.CommandType = adCmdStoredProc
 
cmdExeproc.CommandText = "proc1"
Set Prm = cmdExeproc.CreateParameter("@SommeGen", adSingle, adParamOutput) 'définition du paramètre
cmdExeproc.Parameters.Append Prm
 
cmdExeproc.Execute , , adExecuteNoRecords  <<<===C'EST LA QUE CA PLANTE
 
SommeGEN = cmdExeproc.Parameters("@SommeGen")
AU niveau du .execute j'ai le message 'Précision non valide', je sais plus quoi faire, j'espère que ce ne sera pas votre cas

Merci