[Résolu][VBA][Access] Appel de proc stock SQL SERVER

Appel de proc stock SQL SERVER [Résolu][VBA][Access] - VB/VBA/VBS - Programmation

Marsh Posté le 06-04-2006 à 10:28:10    

Bonjour à tous,
 
Je suis actuellement en train d'essayer d'adapter une classe VB utilisée sur une page ASP pour interroger une procédure stockée de SQL SERVER (2000) en classe VBA pour une interrogation via Access.
 
J'avais bien une fonction d'interrogation en VBA de cette procédure stockée, mais elle modifie quelque peu le recordset renvoyé par la procédure.
 

Code :
  1. Dim rs As RecordSet
  2.    Dim Conn1 As ADODB.Connection
  3.    Dim Cmd1 As ADODB.Command
  4.    Dim Rs1 As ADODB.RecordSet
  5.    Dim strTmp As String
  6.    Dim Connect As String
  7.    Dim Drop As String
  8.    Dim Create As String
  9.    Dim sp As String
  10.    Dim i As Integer
  11.    Dim l As Long
  12.    sConnect = "tous ce qu'il faut pour se connecter, ;-)"
  13.    ' Establish connection.
  14.    Set Conn1 = New ADODB.Connection
  15.    Conn1.ConnectionString = sConnect
  16.    Conn1.Open
  17.     ' Open recordset.
  18.     Set Cmd1 = New ADODB.Command
  19.     Cmd1.ActiveConnection = Conn1
  20.     Cmd1.CommandText = "ma proc stock"
  21.     Cmd1.CommandType = adCmdStoredProc
  22.     ' Passage d'un paramètre à la proc stock
  23.     Cmd1.Parameters.Refresh
  24.     Cmd1.Parameters(1).Value = Me.prod1valide.Value
  25.     'passage d'un secod paramètre (désactivé)
  26.     'Cmd1.Parameters.Refresh
  27.     'Cmd1.Parameters(2).Value = Me.prod2valide.Value
  28.     Set Rs1 = Cmd1.Execute()
  29.     'Construction de la liste de choix
  30.     Dim x As Integer
  31.     x = 0
  32.     Me.liste_prod_2.Value = ""
  33.     Do While Not Rs1.EOF
  34.     Me.liste_prod_2.AddItem (Rs1.Fields("PROPOSITION" ))
  35.     Rs1.MoveNext
  36.     Loop
  37.     cmdvalidprod2.Enabled = True
  38.    ' Process results from recordset, then close it.
  39.    Rs1.Close
  40.    Set Rs1 = Nothing


   
Lorsque je veux passer plusieurs paramètres, l'affichage montre que les paramètres ne sont pas pris en compte... Pourtant, lorsque j'affiche les paramètres, ils sont bien présents...
 
Donc, je vais essayer d'adapter une classe existante en VB puisque je n'arrive pas à trouver pourquoi la première solution me fait des bêtises...
 
J'ai donc la fonction suivante :
 

Code :
  1. Sub essai()
  2. Set oSP = New StoredProc
  3. oSP.ConnectionString = DB_ConnectionString
  4. oSP.Name = "ma proc stock"
  5. oSP.addParameter "@id1", adInteger, Null, adParamInput, id1
  6. oSP.addParameter "@Id2", adInteger, Null, adParamInput, id2
  7. oSP.addParameter "@t5", adInteger, Null, adParamInput, t5
  8. Set oRst = oSP.RecordSet
  9. nb_mel = oRst.RecordCount
  10. Set oSP = Nothing
  11. End Sub


 
et la classe de questionnement de proc stock (je ne mets que le début où cela plante)
 

Code :
  1. Option Compare Database
  2. Private oCmd
  3. Private iCurPar
  4. Private ifirstOutParam
  5. Private Sub Class_Initialize()
  6.   Set oCmd = Server.CreateObject("ADOBD.Command" ) 'Ca plante ici
  7.   oCmd.CommandType = 4 'adCmdStoredProc
  8.   iCurPar = 0
  9.   ifirstOutParam = Null
  10. End Sub
  11. Private Sub Class_Terminate()
  12.   Set oCmd = Nothing
  13. End Sub


 
Il me met erreur 424, objet requis. Si j'enlève server juse avant .createobject("ADOBD.Command" ), il me met l'erreur 429, un composant ActiveX ne peut pas créer d'objet.
 
J'en perd mon latin...  
 
Si quelqu'un peut m'aider dessus, soit pour la première fonction d'appel de la procdure (incorporation de paramètres) ou sur la classe.
 
Merci de vos réponses.


Message édité par Manu la Science le 06-04-2006 à 15:20:24

---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 06-04-2006 à 10:28:10   

Reply

Marsh Posté le 06-04-2006 à 15:20:08    

J'ai pris la première méthode et j'y suis arrivé.
 
Un truc à ne pas oublier et faire comme moi, c'est à dire perdre plein de temps... Quand on attribue des valeur à une liste de choix comme je le fais dans la première méthode, il ne faut pas oublier d'initialiser la liste lors du démarrage et enlever les valeurs que l'on aurait attribuées lors d'une précédente utilisation...
 
Je ne comprenais pas pourquoi j'avais des valeurs qui apparaissaient alors que sur le serveur la pro stock ne renvoyait pas ces valeurs... Elles provenaient d'une utilisation précédente.
 
J'espère que cela servira à quelqu'un, car on perd très facilement beaucoup de temps pour rien.


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed