Bonjour,

J'ai creee une procedure stockee sur SQLSERVER et j essaye de la lancer avec VBA sur MSACCESS.
La procedure doit retourner la valeur de la cle primaire d'un champ nouvellement insere.
Ca marche tres bien avec MS SQL management studio.

Mais avec CBA, j'obtiens une erreur comme quoi SQLSERVER ne peut transformer un VARCHAR en integer, ce que je ne comprends pas parce qu'il ne devrait pas essayer de le faire.
En tout cas je ne demande pas qu il le fasse.
Ci-dessous la procedure stockee:



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
Create proc spSetLogonTime
@logID int output,
@UserId varchar(10),
@logtime datetime
as begin
   Insert into T_Log (User_Id,Log_on_Date) Values(@UserId ,@logtime)
   Select @logID=log_id from T_log where user_id = @userID and log_on_date = @logtime
End
Ca marche tres bien comme ca et la proecdure retourne la valeur attendue:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Declare @myID  int
Execute spSetLogonTime @UserId='BZ', @logtime='2:30', @logID = @myID out
print @myID
Et le code VBA qui ne marche pas ( erreur de conversion Varchar to int)

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
 
    Dim adoConn As New ADODB.Connection
    Dim adoCommSP As New ADODB.Command
    dim activeUser_ID  as string
    Dim user_Param As ADODB.Parameter
    Dim logOnTime_Param As ADODB.Parameter
    Dim logID_Param As ADODB.Parameter
 
    adoConn.ConnectionString = "Driver={SQL Server};Server=monServeur; Database=maBase; Trusted_Connection=yes;"
    adoConn.Open
    adoCommSP.ActiveConnection = adoConn
 
    adoCommSP.CommandType = adCmdStoredProc
    adoCommSP.CommandText = "maprocedure"
 
   logTime = Now() 
   activeUser_ID = "SuperUSER"
 
    Set user_Param = adoCommSP.CreateParameter("@userID", adVarChar, adParamInput, 10, activeUser_ID)
    Set logOnTime_Param = adoCommSP.CreateParameter("@logtime", adDBTimeStamp, adParamInput, 10, logTime)
    Set logID_Param = adoCommSP.CreateParameter("@logID", adInteger, adParamOutput, 200)
 
    adoCommSP.Parameters.Append user_Param 
    adoCommSP.Parameters.Append logOnTime_Param
    adoCommSP.Parameters.Append logID_Param
   adoCommSP.Execute

Vous avez une idee de pourquoi j'obtiens mon erreur? J'ai beau chercher... Je m arrache les cheveux la...
MERCI