/ 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
ADO-fejl
Fra : Andreas Slot-Henriks~


Dato : 19-08-01 20:31

Hej...

Jeg har lavet følgende kode:

------ START ------
strSQL = "Select * From tblTest"

Set ConnProdukt = Server.CreateObject("ADODB.Connection")
ConnProdukt.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath ("../database/produkter.mdb")

Set rsNyheder = Server.CreateObject("ADODB.Recordset")
rsNyheder.Open strSql, ConnProdukt, adOpenDynamic
------ STOP ------


Med ovenstående har jeg to problemer:

1) Hvis jeg senere i koden skrive "response.write rsNyheder.RecordCount" får
jeg altid resultatet "-1". Hvorfor det? Og det er selv om jeg sagtens
"udskrive" fx. 50 poster - og min CusorType er jo Dynamic...!

2) Hvis jeg laver en "rsNyheder.Move -1" får jeg følgende fejl: "Rækkesættet
understøtter ikke baglæns hentning." Jeg har også prøvet med
"rsNyheder.MovePrevious", men så får jeg bare fejlen: "Denne handling er
ikke tilladt i denne sammenhæng". Hvad er der galt?

Til orientering ser resten af koden sådan ud:

------ START ------
If Not (rsNyheder.BOF Or rsNyheder.EOF) Then
Response.write "<B>Navigation mellem de " & rsNyheder.RecordCount & "
nyeste produkter</b><br>"

rsNyheder.Move -1
If rsNyheder.BOF = False Then
Response.write "<A href=produkt_enkelt.asp?ProduktID=" &
rsNyheder("ProdukterID") & "&La=" & strSprog & ">Tilbage (nyere)</a> - "
End If
rsNyheder.MoveNext


rsNyheder.MoveNext
If rsNyheder.EOF = False Then
Response.write "<A href=produkt_enkelt.asp?ProduktID=" &
rsNyheder("ProdukterID") & "&La=" & strSprog & ">Frem (aelig;ldre)</a> - "
End If
rsNyheder.Move -1
Else
' Ved fejl
Response.Write "<B>No records...</B>"
End If
------ STOP ------



mvh.
Andreas



 
 
Lars Hoffmann (19-08-2001)
Kommentar
Fra : Lars Hoffmann


Dato : 19-08-01 21:14

Andreas Slot-Henriksen wrote:
>
> rsNyheder.Open strSql, ConnProdukt, adOpenDynamic


prøv at ændre ovenstående til:

set rsNyheder = ConnProdukt.execute(strSql)

> Med ovenstående har jeg to problemer:
>
> 1) Hvis jeg senere i koden skrive "response.write rsNyheder.RecordCount" får
> jeg altid resultatet "-1". Hvorfor det? Og det er selv om jeg sagtens
> "udskrive" fx. 50 poster - og min CusorType er jo Dynamic...!

nogle gange fejler RecordCount hvis man ikke har bevæget sig igennem
recordsettet først. Det er muligt at det skyldes at du har nogle ældre
ADO drivers installeret. Prøv at se om du ikke kn finde en opdatering
til dine ADO Drivers og hvis det ikke virker, så prøv følgende:

rsNyheder.movelast
rsNyheder.movefirst
response.write(rsNyheder.RecordCount)


> 2) Hvis jeg laver en "rsNyheder.Move -1" får jeg følgende fejl: "Rækkesættet
> understøtter ikke baglæns hentning." Jeg har også prøvet med
> "rsNyheder.MovePrevious", men så får jeg bare fejlen: "Denne handling er
> ikke tilladt i denne sammenhæng". Hvad er der galt?

Det er specielt dette der får mig til at tænke på at du måske skal have
opdateret dine drivers.
Med venlig hilsen
Lars Hoffmann

Andreas Slot-Henriks~ (19-08-2001)
Kommentar
Fra : Andreas Slot-Henriks~


Dato : 19-08-01 21:37

Hej Lars...

---CUT---
> Det er muligt at det skyldes at du har nogle ældre
> ADO drivers installeret. Prøv at se om du ikke kn finde en opdatering
> til dine ADO Drivers og hvis det ikke virker, så prøv følgende:
---------

Tja, gid det var så vel... jeg har installeret mdac 2.6!!! Findes der
en nyere driver?

Jeg forsøgte at gøre, som du skrev, men det gav desværre ingen
ændringer i fejlbeskederne...


mvh.
Andreas Slot-Henriksen



Rune Andersen (20-08-2001)
Kommentar
Fra : Rune Andersen


Dato : 20-08-01 12:13

Hej

"Lars Hoffmann" <lars@hoffmann.ac> wrote in message
news:3B801E15.B2BE058C@hoffmann.ac...
> Andreas Slot-Henriksen wrote:
> >
> nogle gange fejler RecordCount hvis man ikke har bevæget sig igennem
> recordsettet først. Det er muligt at det skyldes at du har nogle ældre
> ADO drivers installeret. Prøv at se om du ikke kn finde en opdatering
> til dine ADO Drivers og hvis det ikke virker, så prøv følgende:
>
> rsNyheder.movelast
> rsNyheder.movefirst
> response.write(rsNyheder.RecordCount)
>

Følgende er klippet fra ADO help :
---
The cursor type of the Recordset object affects whether the number of
records can be determined. The RecordCount property will return -1 for a
forward-only cursor; the actual count for a static or keyset cursor; and
either -1 or the actual count for a dynamic cursor, depending on the data
source.
---

Jeg ville forsøge mig med en keyset eller static cursor, hvis det ikke er
vigtigt om man kan se løbende tilføjelser - da det er en web side så er det
vel ok.

Der udover forstår jeg ikke hvorfor det er nødvendigt at bruge
recordset.move -1.
Hvis det er en "bladre" funktion, så kan man alligevel ikke gøre sådan,
medmindre man har recordsættet i en sessionvariabel (og det har man vel
ikke) Jeg ville putte et startnr i en sessionvar og bruge recordset.move
til at springe frem og vise næste side.

mvh
Rune





Andreas Slot-Henriks~ (20-08-2001)
Kommentar
Fra : Andreas Slot-Henriks~


Dato : 20-08-01 15:29

Hej NG...

Svend Nielsen kom lige med svaret til mig... jeg havde glemt at
lave en include af filen adovbs.inc...


mvh.
Andreas



Rune Andersen (23-08-2001)
Kommentar
Fra : Rune Andersen


Dato : 23-08-01 10:47

Hejsa

Jeg er gået bort fra at bruge adovbs.inc. Det er smartere at inkludere
tybelib i metatag, således:

<!-- METADATA TYPE="TypeLib" NAME="Microsoft ActiveX Data Objects 2.5
Library"
UUID="{00000205-0000-0010-8000-00AA006D2EA4}" -->

så får man ikke fyldt navne-rummet, idet de udeklarerede variable først
bliver kigget efter i tybelib når de er nødvendige.

Derudover behøver asp fortolkeren ikke at køre igennem hele adovbs hvergang
( = hurtigere), og den er ligeglad med om man kommer til at tilføje linien
flere gange, fx ved filer der bliver inkluderet.
Samme metode kan bruges til at få konstanterne til fx adox og cdo2000 :

<!-- METADATA TYPE="TypeLib" NAME="Microsoft ADO Ext. 2.5 for DDL and
Security"
UUID="{00000600-0000-0010-8000-00AA006D2EA4}" -->

<!-- METADATA TYPE="TypeLib" NAME="CDO for Windows 2000 Type Library"
UUID="{CD000000-8B95-11D1-82DB-00C04FB1625D}" -->

Eller en dll man ikke gider registerer.

Mvh

Rune


"Andreas Slot-Henriksen" <andreas.s-h@mail.dk> wrote in message
news:3b811e25$0$76918$edfadb0f@dspool01.news.tele.dk...
> Hej NG...
>
> Svend Nielsen kom lige med svaret til mig... jeg havde glemt at
> lave en include af filen adovbs.inc...
>
>
> mvh.
> Andreas
>
>



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

Månedens bedste
Årets bedste
Sidste års bedste