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"
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
04. januar 2008 - 14:11
#1
do you mean a Stored Procedure in an SQL database or a query in the current dB?
04. januar 2008 - 14:25
#2
a query in the current dB
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
04. januar 2008 - 14:55
#4
jeg ville bruge command objektet for at kunne overføre parameter i næste step
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"?
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
05. januar 2008 - 15:44
#8
rs er slet ikke knyttet til cmd. prøv: set rs = cmd.execute mvh Niels
05. januar 2008 - 15:47
#9
eller: Set GetRecordsetByStoredProcedure = cmd.Execute så behøver du ikke dit rs-objekt
05. januar 2008 - 15:53
#10
Hi Niels I'm not sure what GetRecordsetByStoredProcedure is, can you give a bit more info?
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
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
05. januar 2008 - 17:18
#13
Tak for alle input. jeg er lidt forvirret nu. nih >> har du ikke et helt eksempel.
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
07. januar 2008 - 08:38
#15
det hjalp en hel del. Tak for hjælpen. Er alle glade hvis i deler point ?
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?
07. januar 2008 - 11:27
#17
glad for at kunne hjælpe :)
07. januar 2008 - 15:56
#18
Så for nih alle points
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser