Christian Epstein skrev:
> Er der nogen der kan se noget forkert i denne her kode, den
> skulle gerne tælle antallet af recordsets
Nej - du har kun ét postsæt (recordset) i din kode. Du har til
gengæld sikkert flere poster (records) i postsættet.
Man kan godt arbejde med flere postsæt, men det er ikke det du gør
her.
> og gå til et tilfældigt record set af de tilgængelige
Så er det en meget ineffektiv metode du har valgt.
Pt. gør du følgende:
a) Hent data til et postsæt
b) Rul frem til sidste post
c) Gem data fra postsættet i et array (rsmon.getrows())
d) Find et tilfældigt nr. via index-værdierne fra arrayet
e) Forsøg at flytte postsættet til en specifik post
Der er flere problemer med denne fremgangsmåde. For det første skal
du, hvis du vil benytte getrows, glemme alt om at læse direkte fra
postsættet. Du kan altså springe punkt b og e over i listen
herover, og hente data direkte fra dit array.
Selv med denne metode er der stadig en del overflødige data der
flyttes fra databasen til asp-parseren - eftersom du henter alle
poster bare for at vise en enkelt. Hvis datasættet ikke opdateres
dynamisk, kan du bruge en kode som denne:
' Maksværdien for id-feltet i tabellen
Const maxID = 42
Dim findNumber
' Find et tilfældigt nummer mellem 1 og maxID + 1
findNumber = RandomNumber(maxID)
Dim sql
sql = "SELECT TOP 1 * FROM tabel WHERE id <= " & Cstr(findNumber)
Metoden virker også selv om der er "huller" i id-rækken, men den
giver i så fald ikke en perfekt ligefordeling mellem værdierne.
Hvis det ikke er et problem, skulle den virke fint.
Man kan også udbygge den så maxID findes fra databasen i stedet.
Det giver et ekstra kald, men det bør stadig være væsentlig
hurtigere end først at hente alle data fra en stor tabel og
derefter finde en enkelt post herfra.
> spørgsmålet er også stillet i access gruppen
Dårlig ide - specielt når der ikke også er krydspostet. Spørgsmålet
hører hjemme i asp-gruppen, også selv om det er Access der bruges
som database. Det er asp-koden der volder problemer - ikke
sql/databasekoden.
Læs i øvrigt gerne siden her:
<
http://usenet.dk/netikette/crosspost.html>
--
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