/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Mystisk fejlmelding om lukning af RS ?
Fra : Jakob Munck


Dato : 14-07-03 08:44

Jeg lukker min Recordset på denne måde:

If IsObject(RS) Then
RS.Close
Set RS = Nothing
End if

Men en gang imellem får jeg denne fejlmelding:

Microsoft VBScript runtime (0x800A01A8)
Object required


Hvad er der galt?
Hvordan kan den sige at "Object required", når min jeg bruger "If
IsObject(RS) Then" ? Så skulle man netop tro, at der ikke behøvede at være
noget recordobject, da lukningen er betinget af, at det eksisterer.

Det forstår jeg ikke. Hvem kan give en forklaring?

v.h.
Jakob Munck



 
 
Peter Lykkegaard (14-07-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 14-07-03 09:20


"Jakob Munck" <jakob.munck@tdcadsl.dk> wrote in message
news:3f125f1c$0$32448$edfadb0f@dread16.news.tele.dk...
> Jeg lukker min Recordset på denne måde:
>
> If IsObject(RS) Then
> RS.Close
> Set RS = Nothing
> End if
>
> Men en gang imellem får jeg denne fejlmelding:
> Microsoft VBScript runtime (0x800A01A8)
> Object required
>
Hvis RS er lig med "nothing" så kan du ikke bruge metoden "Close"
Du får så en runtime error "obejct required"

IsObject(RS) returnere true hvis RS er lig med "Nothing"

Jeg bruger IsObject for at undersøge om mit object er initialiseret
Lige efter at du har erklæret RS vha "Dim RS" så er RS lig med "Empty" af
typen variant og IsObject vil derfor returnere "false"

mvh/Peter Lykkegaard



Jakob Munck (14-07-2003)
Kommentar
Fra : Jakob Munck


Dato : 14-07-03 09:50

Kan man så anvende

If IsObject(RS) = True Then
RS.Close
Set RS = Nothing
End if

Og lukke sit RS-obekt, hvis det eksisterer, på denne måde? Eller hvordan
skal man ellers lave kode, der lukker objektet, hvis det eksisterer, og ikke
lukker det, hvis det ikke eksisterer?


v.h.
Jakob



Peter Lykkegaard (14-07-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 14-07-03 14:14


"Jakob Munck" <jakob.munck@tdcadsl.dk> wrote in message
news:3f126e9c$0$32447$edfadb0f@dread16.news.tele.dk...
>
> > If IsObject(RS) Then

> Kan man så anvende
> If IsObject(RS) = True Then

Hvor skulle forskellen være?

> Eller hvordan skal man ellers lave kode,
> der lukker objektet, hvis det eksisterer, og ikke
> lukker det, hvis det ikke eksisterer?
>
Der er flere muligheder
Brug "On Error Resume Next"
Så undgår du en runtime error

Eller noget ala

If IsObject(RS) Then
If Not RS Is Nothing Then
If RS.State <> adStateClosed Then
RS.Close
End If
Set RS = Nothing
End If
End If

NB "adStateClosed" skal erklæres som en const i toppen af koden

Der er lidt mere skriv fx her:
http://www.4guysfromrolla.com/webtech/tips/t021000-1.shtml

Du kan også gå et skridt videre og kapsle dit recordset ind i en class
Der er så klassen der sørger for oprydningen
Kik evt lidt her
http://www.urfinjus.net/UJ2/docs/CTR_ProgGuide.htm

mvh/Peter Lykkegaard



Jens Gyldenkærne Cla~ (14-07-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-07-03 10:33

Jakob Munck skrev:

> If IsObject(RS) = True Then

Ovenstående afgør alene om RS er et objekt. Hvis du skal afgøre om
det også er initialiseret kan du (formentlig, ikke afprøvet)
skrive:

If Not (RS is Nothing) AND IsObject(RS) Then

NB: Det er lettere at følge tråden hvis du citerer lidt at det du
kommenterer. Se evt. min signatur.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408934
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste