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 :
- Dim rs As RecordSet
- Dim Conn1 As ADODB.Connection
- Dim Cmd1 As ADODB.Command
- Dim Rs1 As ADODB.RecordSet
- Dim strTmp As String
- Dim Connect As String
- Dim Drop As String
- Dim Create As String
- Dim sp As String
- Dim i As Integer
- Dim l As Long
- sConnect = "tous ce qu'il faut pour se connecter, ;-)"
- ' Establish connection.
- Set Conn1 = New ADODB.Connection
- Conn1.ConnectionString = sConnect
- Conn1.Open
- ' Open recordset.
- Set Cmd1 = New ADODB.Command
- Cmd1.ActiveConnection = Conn1
- Cmd1.CommandText = "ma proc stock"
- Cmd1.CommandType = adCmdStoredProc
- ' Passage d'un paramètre à la proc stock
- Cmd1.Parameters.Refresh
- Cmd1.Parameters(1).Value = Me.prod1valide.Value
- 'passage d'un secod paramètre (désactivé)
- 'Cmd1.Parameters.Refresh
- 'Cmd1.Parameters(2).Value = Me.prod2valide.Value
- Set Rs1 = Cmd1.Execute()
- 'Construction de la liste de choix
- Dim x As Integer
- x = 0
- Me.liste_prod_2.Value = ""
- Do While Not Rs1.EOF
- Me.liste_prod_2.AddItem (Rs1.Fields("PROPOSITION" ))
- Rs1.MoveNext
- Loop
- cmdvalidprod2.Enabled = True
- ' Process results from recordset, then close it.
- Rs1.Close
- 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 :
- Sub essai()
- Set oSP = New StoredProc
- oSP.ConnectionString = DB_ConnectionString
- oSP.Name = "ma proc stock"
- oSP.addParameter "@id1", adInteger, Null, adParamInput, id1
- oSP.addParameter "@Id2", adInteger, Null, adParamInput, id2
- oSP.addParameter "@t5", adInteger, Null, adParamInput, t5
- Set oRst = oSP.RecordSet
- nb_mel = oRst.RecordCount
- Set oSP = Nothing
- End Sub
|
et la classe de questionnement de proc stock (je ne mets que le début où cela plante)
Code :
- Option Compare Database
- Private oCmd
- Private iCurPar
- Private ifirstOutParam
- Private Sub Class_Initialize()
- Set oCmd = Server.CreateObject("ADOBD.Command" ) 'Ca plante ici
- oCmd.CommandType = 4 'adCmdStoredProc
- iCurPar = 0
- ifirstOutParam = Null
- End Sub
- Private Sub Class_Terminate()
- Set oCmd = Nothing
- 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...