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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1340299
Manu la Sc​ience
...la science ... pas toujours
Posté le 06-04-2006 à 10:28:10  profilanswer
 

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...
mood
Publicité
Posté le 06-04-2006 à 10:28:10  profilanswer
 

n°1340679
Manu la Sc​ience
...la science ... pas toujours
Posté le 06-04-2006 à 15:20:08  profilanswer
 

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...

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

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

 

Sujets relatifs
envoi de messages automatiques + pièce jointe vers Outlook par Access[MySql][resolu] Reinitialisation complete
une macro en appel une autre[Résolu] Récupérer l'id max d'une table
[resolu]Passer un objet dans une variable de sessionauto incrément SQL Server 2005
[Résolu] Exploser une chaine[Résolu[VBA][Access] Remplissage d'1 liste déroulante avec 1 Recordset
Plus de sujets relatifs à : [Résolu][VBA][Access] Appel de proc stock SQL SERVER


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