On Fri, 15 Aug 2008 18:06:45 +0200, "Kurt G" <kurt_g@guldbaek.net>
wrote:
>Jeg har brug for at vide, hvor mange poster, der er i en tabel.
>Da jeg ikke kender nogen anden metode tæller jeg dem op med en EOF-loop.
>Når det er gjort, er pegepinden for tabellen jo i bunden af tabellen og for
>at bringe pegepinden til starten af tabellen, lukker og åbner jeg tabellen
>igen.
>Er der ikke en smartere måde at gøre det på?
Absolut - indtil flere.
Den emst enkle er nok:
intAntalPoster = objRs.RecordCount
- det kræver, at Recordsettet ikke er åbnet med en ForwardOnly cursor,
men fx en Static cursor. Fx:
Set objRs = Server.CreateObject("ADODB.RecordSet")
objRs.Open strSql, strDsn, 3
3-tallet angiver en statisk cursor. Kan evt. gøres mere læsbar med
Const adOpenStatic = 3
(eller ved at indlæse alle ADO-konstanterne).
Se mere:
<url:
http://www.w3schools.com/ado/ado_ref_recordset.asp>
<url:
http://www.w3schools.com/ado/prop_rs_cursortype.asp>
Hvis du af en eller anden grund skal flytte cursoren (pegepinden), så er
der flere muligheder - bl.a.:
objRs.MoveNext (1 frem - kender du sikkert fra Rs-loops)
objRs.MovePrevious (1 tilbage)
objRs.MoveFirst (flyt til første post)
objRs.MoveLast (flyt til sidste post)
objRs.Move(-3) (3 poster baglæns - eller hvilket tal man nu vælger)
Man skal være opmærksom på:
- at bruge den rigtige cursor ForwardOnly kan naturligvis ikke "spole
baglæns")
- ikke at pege ud over .Bof eller Eof (start eller slut)
Desuden - hvis du virkelig har behov for at jonglere med din pegepind -
så er der også en Bookmark-egenskab, som kan læses og/eller sættes.
<url:
http://www.w3schools.com/ado/prop_rs_bookmark.asp>
En anden metode:
Hvis du alligevel trækker recordsettet ud i et array med. GetRows, så
kan du bare måle størrelse på arrayet med Ubound (+1).
Hvis du
Good luck!
--
Jørn Andersen,
Brønshøj