ouf ayé
j'ai réussi
yavait pas mal d'erreur dans mon code
voici un code complet qui marche:
****************** VB ****************
Public USER As String
Public PASSWORD As String
Public DATABASE As String
Public SERVEUR As String
Public cnx As ADODB.Connection
Public Function InitialiseChaineConnexion(ByRef cnx As ADODB.Connection) As Boolean
'On se connecte a la base de reference
On Error GoTo ConnectError
Set cnx = New ADODB.Connection
'Définition de la chaîne de connexion
cnx.ConnectionString = "UID=" & USER & ";PWD=" & PASSWORD & ";" & "DRIVER={SQL Server};Server=" & SERVEUR & ";Database=" & DATABASE & ";"
'Fermeture de la base de données
cnx.Open
InitialiseChaineConnexion = True
Exit Function
ConnectError:
MsgBox "Erreur lors de l'ouverture de la base de donnée : " & Err.Description, vbCritical
InitialiseChaineConnexion = False
End Function
Private Sub Command1_Click()
Dim oRs As ADODB.Recordset
Dim oCmd As ADODB.Command
Set oCmd = New ADODB.Command
Dim oParam As ADODB.Parameter
Dim szRetour As String
Dim j as integer
USER = "user"
PASSWORD = "password"
DATABASE = "database"
SERVEUR = "serveur"
Call InitialiseChaineConnexion(cnx)
Set oCmd = New ADODB.Command
Set oCmd.ActiveConnection = cnx
oCmd.CommandType = adCmdStoredProc
oCmd.CommandText = "[" & DATABASE & "].[" & USER & "].[MAJ_EXPORT_LOT]"
'Définition du paramètre retournant la valeur renvoyée par la procédure stockée
Set oParam = oCmd.CreateParameter("E_RETURN", adInteger, adParamOutput, , 1)
Call oCmd.Parameters.Append(oParam)
Set oParam = oCmd.CreateParameter("E_NOM", adChar, adParamInput, 50, "VAL2" )
Call oCmd.Parameters.Append(oParam)
'oCmd.CommandText = "[" & DATABASE & "].[" & USER & "].[MAJ_EXPORT_LOT] " & szNumLot & ", @E_RETURN OUTPUT "
Set oCmd.ActiveConnection = cnx
oCmd.Execute
'Affichage de la valeur renvoyée par la procédure stockée
j = oCmd.Parameters.Item("E_RETURN" ).Value 'retour 4
'oRs.Close
cnx.Close
End Sub
******************* SQL SERVEUR ********************
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
ALTER PROCEDURE RSGDF.MAJ_EXPORT_LOT (@E_RETURN integer OUTPUT, @E_NOM varchar(50)) AS
DECLARE @CPT INTEGER;
set @E_RETURN = 9
SELECT @CPT = (SELECT COUNT(@E_NOM) FROM Export_Lot WHERE E_NOM = @E_NOM)
IF @CPT = 0
INSERT INTO Export_Lot(E_NOM, E_CPT) VALUES (@E_NOM, 1)
ELSE
BEGIN
SELECT @CPT = (SELECT E_CPT+1 FROM Export_Lot WHERE E_NOM = @E_NOM)
UPDATE Export_Lot SET E_CPT = @CPT WHERE E_NOM = @E_NOM
END
set @E_RETURN = 4
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Message édité par molarisapa le 10-04-2006 à 15:24:45