Toon posts:

[ASP] ADO recordsetobject retourneren van functie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een ADO recordset retourneren van een functie en deze dan gebruiken alleen het werkt niet. Ik krijg een 'exeption ocurred' error.

Zie het ongeveer zo;

Function GetRs()
Dim objRs
set objRs = server.createobject("adodb.recordset")
objRs.open "select * from tabel", objDbConn, 0, 1

GetRs = objRs

objRs.Close
set objRs = nothing
End Function

Dim objRsBlaat

'deze werkt niet
set objRsBlaat = GetRs

'en deze werkt niet
objRsBlaat = GetRs

Hoe werkt dit wel?

Verwijderd

code:
1
2
3
4
5
6
7
8
Function GetRs()
   Dim objRs
   set objRs = server.createobject("adodb.recordset")
   objRs.open "select * from tabel", objDbConn, 0, 1
   set GetRs = objRs
   objRs.Close
   set objRs = nothing
End Function

probeer deze es.

Verwijderd

Topicstarter
Nop. Zelfde resultaat. ;(

Verwijderd

code:
1
2
3
4
5
6
Function GetRs()
   Dim objRs
   set objRs = server.createobject("adodb.recordset")
   objRs.open "select * from tabel", objDbConn, 0, 1
   set GetRs = objRs
End Function

Niet je recordset sluiten en op Nothing zetten. Je geeft namelijk een referentie als resultaat, maar heb zelf ook nog de referentie, dus als je via deze referentie het object sluit en opruimt, geef je feitelijk een lege referentie als functieresultaat.

Ik vind het sowieso meestal een beter idee om een object in de context te definieren waarin je hem gaat gebruiken en waarin je hem ook weet afsluit.
code:
1
2
3
4
5
6
7
8
9
10
Sub GetRs(objRS)
   objRs.open "select * from tabel", objDbConn, 0, 1
End Function

Dim objRsBlaat
Set objRsBlaat = Server.Createobject("adodb.recordset")
GetRs(objRsBlaat)
'gebruik recordset hier en sluit hem hier ook weer
objRsBlaat.Close
Set objRsBlaat = Nothing


HTH :)

Verwijderd

Topicstarter
Goed plan. ik ben het helemaal met je eens overigens over dat je variabalen beter kan declareren in de context waar je die gaat gebruiken.

THnx!