29. august 2000 - 12:25Der 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.)
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.
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?
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å.
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)
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.
Synes godt om
Ny brugerNybegynder
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.