Avatar billede joki Mester
04. januar 2008 - 13:14 Der er 17 kommentarer og
1 løsning

Hente recordset via stored procedure

Hej

Hvordan henter jeg et recordset ved at kalde navnet på en forud defineret query.  Jeg har prøvet med nedenstående kode


Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim con As New ADODB.Connection




With cmd
.ActiveConnection = CurrentProject.Connection
.CommandText = "TESTQuery"
.CommandType = adCmdStoredProc
End With

cmd.Execute

Set GetRecordsetByStoredProcedure = rs


Når jeg efterfølgende forsøger at åbne recordsettet for at gennemløbe dette får jeg fejlen

"Forbindelsen kan ikke bruges til at udføre denne handling. Den er enten lukket eller ugyldig i denne forbindelse"
Avatar billede terry Ekspert
04. januar 2008 - 14:11 #1
do you mean a Stored Procedure in an SQL database or a query in the current dB?
Avatar billede joki Mester
04. januar 2008 - 14:25 #2
a query in the current dB
Avatar billede terry Ekspert
04. januar 2008 - 14:30 #3
If you mean a query then something like this should work

Dim rs As New ADODB.Recordset

Set rs = New ADODB.Recordset
With rs
  set .ActiveConnection = CurrentProject.Connection
  .Open "SELECT * FROM TESTQuery"

  Do Until .EOF

    'Do what ever you want with each record

    .MoveNext
  Loop

End With
rs.Close
Avatar billede joki Mester
04. januar 2008 - 14:55 #4
jeg ville bruge command objektet for at kunne overføre parameter i næste step
Avatar billede terry Ekspert
04. januar 2008 - 15:56 #5
I'm not at all sure if you can use paramaters with on a query in ADO.

Can I see the SQL in the query "TESTQuery"?
Avatar billede terry Ekspert
04. januar 2008 - 15:57 #6
I know you can use paramaters with DAO and queryDefs but this isnt the same as a stored procedure
Avatar billede terry Ekspert
04. januar 2008 - 16:01 #7
Here is an example using a parameterised query but it still doeasnt use the command object

http://www.xefteri.com/articles/show.cfm?id=6
Avatar billede nih Novice
05. januar 2008 - 15:44 #8
rs er slet ikke knyttet til cmd.

prøv:
set rs = cmd.execute

mvh Niels
Avatar billede nih Novice
05. januar 2008 - 15:47 #9
eller:


Set GetRecordsetByStoredProcedure = cmd.Execute

så behøver du ikke dit rs-objekt
Avatar billede terry Ekspert
05. januar 2008 - 15:53 #10
Hi Niels
I'm not sure what GetRecordsetByStoredProcedure is, can you give a bit more info?
Avatar billede nih Novice
05. januar 2008 - 15:55 #11
Hi Terry - Godt nytår :)

Jeg tror at hans kode ligger i en function

function GetRecordsetByStoredProcedure() as recordset
......
end function
Avatar billede nih Novice
05. januar 2008 - 15:58 #12
Og du kan godt bruge paramtre med command:

function GetRecordsetByStoredProcedure() as recordset
  Dim objPara As ADODB.Parameter
  'forgående kode
  Set objPara = cmd.CreateParameter("pId", adInteger, adParamInput, , 3)
  cmd.Parameters.Append objPara
  set CreateParameter = cmd.execute
end function
Avatar billede joki Mester
05. januar 2008 - 17:18 #13
Tak for alle input. jeg er lidt forvirret nu. nih >> har du ikke et helt eksempel.
Avatar billede nih Novice
05. januar 2008 - 17:54 #14
OK
en forsp ('Qry'):
  SELECT * FROM Tabel1 WHERE id=[pId];
pId er en parameter

et modul:
Function test(id As Integer) As ADODB.Recordset

    Dim cmd As New ADODB.Command
    Dim objPara As ADODB.Parameter

    Set objPara = cmd.CreateParameter("pId", adInteger, adParamInput, , id)

    With cmd
        .ActiveConnection = CurrentProject.Connection
        .CommandText = "Qry"
        .CommandType = adCmdStoredProc
        .Parameters.Append objPara
    End With
   
    Set test = cmd.Execute
End Function

Sub test1()
    Debug.Print test(2).Fields(1).Value
End Sub

Håber det hjælper lidt på forviringen :o)
Niels
Avatar billede joki Mester
07. januar 2008 - 08:38 #15
det hjalp en hel del. Tak for hjælpen. Er alle glade hvis i deler point ?
Avatar billede terry Ekspert
07. januar 2008 - 09:36 #16
If you use Niels solution then you should give him them all. Can we see the final code please?
Avatar billede nih Novice
07. januar 2008 - 11:27 #17
glad for at kunne hjælpe :)
Avatar billede joki Mester
07. januar 2008 - 15:56 #18
Så for nih alle points
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester