On 7 Oct 2006 21:41:55 -0700, "spintail" <mastiff@mail.dk> wrote:
>Jørn Andersen skrev:
>
>> På login.asp bliver hverken forbindelsen eller recordsettet lukket.
>> Luk dem med:
>> Login.Close
>> Set Login = Nothing
>> rs.Close
>> Set rs = Nothing
>> - når du er færdig med at bruge dem og inden Redirect.
>
>
>Hmm ved ikke rigtigt hvor det skal sættes har prøvet noget
>forskelligt men det virker ikke lige efter hensigten...
>
>Jeg får denne fejl:
>
>Microsoft VBScript runtime error '800a01a8'
>
>Object required: ''
>
>/admin/temp.asp, line 97
Hvilken en er linie 97?
>Måske du har en ide om hvor der skal lukkes?
Objekterne skal lukkes og slukkes, når du er færdig med at bruge dem.
Du "danner" objekterne med
Set <objekt-navn> = osv.
og åbner med:
<objektnavn>.Open
Herefter bruger du objektet til et eller andet.
De skal så lukkes med:
<objektnavn>.Close
- og slukkes med:
Set <objekt-navn> = Nothing
Så er det bare at løbe igennem scriptet:
Her danner og åbner du objektet rs:
>SET rs = Server.CreateObject("ADODB.Connection")
>rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" &
>Server.MapPath("DB.mdb")
>
>If Request("mode") = "Check" then
- Husk lige til senere, at vi er inde i en If-struktur!
<snip>
Her bruger du rs-objektet - og danner og åbner objektet Login:
>Set Login = Rs.Execute(Sql)
I dette tilfælde er der ikke noget .Open - den er implicit.
Her bruger du Login-objektet:
>if Login("Found") = 0 then
Endnu en If!
>else
>Session("Login") = 1
>Session("password-session") = Request("username")
>Response.Redirect "SIte.asp"
>end if
Her er vi så på vej ud af "True-grenen" af den første If - hvor vi jo
dannede Login-objektet - så den er vi færdig med at bruge. Den skal så
lukkes og slukkes, inden vi går ud:
Login.Close
Set Login = Nothing
Hvis vi ikke lukkede her, så ville vi få den fejl, du beskriver, hvis
Request("mode") *ikke* var "Check".
>else
>end if
Og her kom vi ud af den første If
Her er du så også færdig med at bruge rs-objektet, så den skal lukkes
og slukkes her:
rs.Close
Set rs = Nothing
Men, men, men: Undervejs har du en Response.Redirect. Det vil jo sige,
at du ikke får lukket og slukket, hvis den bliver aktiveret.
Så inde i den samme If, hvor du har Response.Redirect, bør du lukke og
slukke (begge objekter), dvs. lige inden linien med Response.Redirect.
Så skulle du være garderet.
Som nævnt er det lidt forvirrende, at du kalder Connection-objektet
for rs og RecordSet-objektet for Login - men det er op til dig.
Noget andet er, at der (hvis ikke det bruges senere i scriptet) ikke
er nogen grund til at åbne Connection-objektet, hvis mode ikke er
"Check". Så du vil gøre det lidt mindre forvirende (og bruge færre
server-ressourcer), hvis du kun åbnede det, når mode er "Check".
If'er er nogle dejlige ting - men man skal lige huske, om man er inde
i dem eller uden for
Et link til fejlkoden:
<url:
http://classicasp.aspfaq.com/general/why-do-i-get-the-error-object-required.html>
aspfaq.com er uundværlig, hvis man skal have hjælp til ASP-fejlkode.
Bare åbn aspfaq.com og copy-paste fejlnummeret (800a01a8) ind i
søgefeltet på fosiden, så er du som regel godt på vej.
Good luck!
--
Jørn Andersen,
Brønshøj