PDA

View Full Version : Ang. metoden close och tilldela nothing


OveRRidE
2002-12-12, 17:25
Jag har en liten fråga till någon som kan svara på den. :)

Beskåda följande kod:

function getRs(SQL)
set conn = server.createobject("adodb.connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("data.mdb")
set rs = conn.execute(SQL)
set getRs = rs
rs.close
set rs = nothing
conn.close
set conn = nothing
end function

set rs2 = getRs("SELECT * FROM [table]")

do until rs2.eof
response.write rs2(0)
rs2.movenext
loop

Den kommer inte fungera, när jag kör .close på objekten rs eller conn. Däremot om jag bara sätter objekten till nothing (set rs/conn = nothing), fungerar det utmärkt.

.close körs ju i destruktorn när nothing tilldelas, då borde det ju bli samma problem?

Någon som kan svara på detta?

Josef
2002-12-12, 21:46
Varför skulle det inte fungera om du kör .close på rs och conn?

LarsG
2002-12-12, 22:02
Destruktorn körs bara om det inte finns några referenser till objeketet.

OveRRidE
2002-12-12, 22:56
Varför skulle det inte fungera om du kör .close på rs och conn? Det är ju precis det jag frågade. ;)

Den säger att objektet inte kunde användas när det är stängt.

OveRRidE
2002-12-12, 22:56
Destruktorn körs bara om det inte finns några referenser till objeketet. Du menar alltså att destruktorn bara körs om jag inte passerat objektet till ett annat objekt då eller? Men det stämmer ju inte då. :q

Josef
2002-12-12, 23:24
Det är ju precis det jag frågade. ;)Jag tycker det lät mer som ett konstaterande. ;) Men men...

Den säger att objektet inte kunde användas när det är stängt. Du kan väl inte köra .close på något som du har kört .execute på? Då finns det väl ingenting att stänga. Men däremot kan du sätta Nothing.

OveRRidE
2002-12-13, 07:35
Du kan väl inte köra .close på något som du har kört .execute på? Då finns det väl ingenting att stänga. Men däremot kan du sätta Nothing.Varför skulle jag inte kunna göra det? ;)

Josef
2002-12-13, 10:25
Du kan väl inte köra .close på något som du har kört .execute på? Då finns det väl ingenting att stänga. Men däremot kan du sätta Nothing.Varför skulle jag inte kunna göra det? ;) Hmm... Jag hade för mig att det inte går att sätta .close på .execute men det kanske är fel...

Jag får skylla på att det var sent. ;)