Avatar billede ripley Nybegynder
29. august 2000 - 12:25 Der er 13 kommentarer og
2 løsninger

Cursor position i recordset

Jeg har brugt metoden \"FIND\" på et recordsæt - altså noget i stil med:

rs.Find \"ID=\" & myID

..Nu vil jeg gerne finde ud af, hvilken position cursoren står på i recordsættet.
Jeg har prøvet med:
rs.AbsolutePosition - men til intet held. Den returnerer bare -1.
Er der nogen, der kan hjælpe?
(Jeg skal lige nævne, at det med \"find\" ser ud til at gå godt - cursoren står det rigtige sted. Jeg kan efterfølgende få skrevet det rigtige ud fra recordsættet i forhold til, hvor den står.)
Avatar billede sa Nybegynder
29. august 2000 - 13:14 #1
Ja, find burde virke fint. Derimod anvendes rs.absoluteposition til at springe til en absolut position i recordsættet - eks. rs.absoluteposition(2)
Avatar billede ripley Nybegynder
29. august 2000 - 13:16 #2
Hvad gør man så - hvordan kan man efter en rs.find finde ud af, hvor i recordsættet cursoren står?
Avatar billede briankl Nybegynder
29. august 2000 - 13:16 #3
Du har det problem at dit recordset ikke er en type der understøtter returnering af sådanne informationer.
Du kan formentlig heller få recordcount fra dit recordset.
Det er en typisk \"begynder\" fejl, der har at gøre med hvordan du åbner dit recordset.

Typisk skal du bruge noget i kode i denne her dur når du åbner dit RS (forudsætter at der et connection object der er åbnet, etc. Vi kalder det Conn):

Set RS = Server.CreateObject (\"ADODB.Recordset\")

strSQL = \"SELECT * FROM mytable\"

Rs.Open strSQL, Conn, 1, 3

Det er 1, 3 der er interessant i denne sammenhæng, i de angiver at der er tale om et recordset, der understøtter de info du efterspørger.
Avatar billede ripley Nybegynder
29. august 2000 - 13:32 #4
Jeg vil nødigt kaldes begynder, men så lad gå da. :-)
Hvorom alting er, så er det præcist sådan, jeg åbner mit RS - og jeg ved godt, at 1,3 har noget at gøre med, hvilke metoder man kan bruge på et recordsæt. Jeg har prøvet med både 0,1,2 og 3 som cursortype og får stadig samme resultat : -1 returneres.
Andre forslag?

Avatar billede briankl Nybegynder
29. august 2000 - 13:33 #5
Hvad får du fra Recordcount?

Og sorry med det der med begynder... Sådan var det ikke ment :)
Avatar billede ripley Nybegynder
29. august 2000 - 13:46 #6
RS.Recordcount returnerer det rigtige tal.
Avatar billede briankl Nybegynder
29. august 2000 - 14:05 #7
Hmm... Ok, det lyder interessant. Så har jeg kun et bud tilbage:

Prøv at lave en .MoveLast og derefter en .MoveFirst lige efter du har åbnet RS\'et. Det tvinger maskinen til at loade hele Recordset\'et, og jeg mener at huske at sådan noget som Recordcount og Abs.Pos. ikke returneres før hele Recordset\'et er loadet. Det er jeg dog ikke 100% sikker på.
Avatar billede ripley Nybegynder
29. august 2000 - 14:11 #8
Hm. Det hjalp ikke.
Er der andre, der har nogen gode idéer?
Avatar billede dcfrh Nybegynder
29. august 2000 - 14:15 #9
Har du prøvet med CursorLocation = client
Avatar billede briankl Nybegynder
29. august 2000 - 14:20 #10
Et spørgsmål: Hvad er det for en database du får dit RS fra?
Avatar billede ripley Nybegynder
29. august 2000 - 14:22 #11
Ja - den giver mig følgende fejlmeddelelse:

ADODB.Recordset error \'800a0e79\'

The operation requested by the application is not allowed if the object is open.

Avatar billede ripley Nybegynder
29. august 2000 - 14:22 #12
Hvor sætter jeg den ind henne???
Avatar billede briankl Nybegynder
29. august 2000 - 14:32 #13
CursorLocation er Read-only for et åbent Recordset. Skal sættes inden du åbner recordsettet.
Alternativt kan det sættes for Connection objektet, hvorefter Recordset\'s returneret af Execute metoden på Connection objektet arver Connection objektet\'s indstilling for CursorLocation.

Bare for en god ordens skyld: CursorLocation = client går selvfølgeligt ikke. Det er en Enum konstant. Tallet for adUseClient er 3 (altså: CursorLocation = 3)
Avatar billede dcfrh Nybegynder
29. august 2000 - 14:32 #14
Du skal sette cursorlocation før du åbner RS

RS.Cursorlocation = adUseClient
RS.Open .........

Din OLE DB provider skal understøtte absolute positioning, for at det virker. - Det gør f.eks sqloledb.
Avatar billede ripley Nybegynder
29. august 2000 - 15:11 #15
Hurra - jeg elsker Eksperten - nu virker det! Det hjalp at sætte RS.CursorLocation = 3 ind før RS.Open.
Point´ene deler jeg lige over - jeg synes, I gav god hjælp begge to.
Tusind tak!
...Nu skal jeg bare finde ud af, hvordan jeg får den til at lade være med at vise siden som den første i recordsættet - den skal jo gå ind der, hvor siden ligger i forhold til de andre. Men det er en anden historie.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester