webForumDet fria alternativet

Ang. metoden close och tilldela nothing

ASP

7 svar · 256 visningar · startad av OveRRidE

Medlem sedan feb. 200112 078 inlägg
Frågan#1

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?

Medlem sedan mars 20023 561 inlägg
#2

Varför skulle det inte fungera om du kör .close på rs och conn?

Medlem sedan dec. 200012 464 inlägg
#3

Destruktorn körs bara om det inte finns några referenser till objeketet.

Medlem sedan feb. 200112 078 inlägg
#4

Josef skrev:

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.

Medlem sedan feb. 200112 078 inlägg
#5

LarsG skrev:

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

Medlem sedan mars 20023 561 inlägg
#6

OveRRidE skrev:

Det är ju precis det jag frågade. ;)

Jag tycker det lät mer som ett konstaterande. ;) Men men...

OverRidE skrev:

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.

Medlem sedan feb. 200112 078 inlägg
#7

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? ;)

Medlem sedan mars 20023 561 inlägg
#8

OveRRidE skrev:

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. ;)

283 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
137 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
137 ms — ändringar (db)