Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1095 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment gérer un code retour d'une procédure SQL serveur en VB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment gérer un code retour d'une procédure SQL serveur en VB

n°1342923
molarisapa
Posté le 10-04-2006 à 12:07:02  profilanswer
 

Bonjour,
 
j'essaye d'appeler une procedure sql serveur en VB avec un code de retour, mais je n'y arrive pas. => ma fonction append ne marche pas :(
 
 
 
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
 
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, adParamReturnValue, 0, lRetour)
'oCmd.Parameters.Append (oParam) 'ne marche pas et si je ne le met pas j'ai un message comme quoi la procedure attend le parametre E_RETURN  :??:  
 
 
'oCmd.CommandText = "[" & DATABASE & "].[" & USER & "].[MAJ_EXPORT_LOT] " & szNumLot & ", @E_RETURN OUTPUT "
Set oCmd.ActiveConnection = cnx
oCmd.Execute
Set oCmd = Nothing
 
'Affichage de la valeur renvoyée par la procédure stockée
MsgBox oCmd.Parameters.Item("E_RETURN" ).Value
'oRs.Close
cnx.Close
 End Sub
 
 
 
 
voici ma procedure stockés:
 
CREATE    PROCEDURE RSGDF.MAJ_EXPORT_LOT (@E_RETURN integer OUTPUT)  AS DECLARE @CPT INTEGER;  
DECLARE @E_NOM As varchar(50)
set @E_NOM = 'toto'
 
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 = 'rr'
GO


Message édité par molarisapa le 10-04-2006 à 15:00:15
mood
Publicité
Posté le 10-04-2006 à 12:07:02  profilanswer
 

n°1343003
molarisapa
Posté le 10-04-2006 à 13:43:36  profilanswer
 

j'ai édité mon message car au depart je faisais ca avec un fonction, j'arrivais a récuperer ma valeur, mais vu que je doit faire des insert/update je doit faire ca avec une procédure finallement


Message édité par molarisapa le 10-04-2006 à 14:59:18
n°1343113
molarisapa
Posté le 10-04-2006 à 15:23:10  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment gérer un code retour d'une procédure SQL serveur en VB

 

Sujets relatifs
Site multilangue et base SQL ...Effet de ce code ?
probleme calcul taille SQLPetit programme pour faire ses comptes ; C'est quoi ce gros bug
[SQL] question de cours sur requêtes SQLQuestion sur sauvegarde de BDD SQL chez Online
décodage de code barre (avec une douchette sur port ps/2)Generateurs de code pour .Net
[VBA/SQL] Passer des instructions SQL (et pkunzip) en VBA[PHPBB] Retrouver un password dans la base SQL
Plus de sujets relatifs à : Comment gérer un code retour d'une procédure SQL serveur en VB


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR