Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  1 586
spellingnazi
canonix's Avatar
First of all, ikke si at jeg skal gå over til PHP etc.
Second, jeg aner ikke hvor mange som faktisk bruker ASP her bortsett fra fritjaaf og myself, men here goes:

Som overskriften sier, skal jeg velge en random record i en potensielt stor database..
Databasen er selvsagt bygd opp med autonummer, men en del 'poster' blir sletta etterhvert. (Derfor kan jeg ikke bare randomize et nummer.)
ID-'lista' kan se slik ut: 1, 2, 3, 5, 7, 20, 23,24,25,29,30 etc.

Jeg har lett litt på aspin.com og lest litt om Stored Procedures i SQL Server uten stort hell .. så .. hvordan kan jeg fikse dette ?

(Jeg har også prøvd å randomize et tall og bruke Rs.FindFirst, men .. det objektet (findfirst) var tydeligvis ikke støtta..)

Er det en mulighet å først ta alle ID-Nummerne ut i en array, og deretter velge en av disse ? Hvor treg vil denne prosessen bli ?

Takker for alle seriøse svar.
spellingnazi
canonix's Avatar
Trådstarter
Hvis det er noen som er interessert så ble koden til slutt slik:

Kode

SQLMax = "SELECT Max(ID) AS max2k FROM myTable"
set rsmax = conn.execute(SQLMax)
varAntallMax = rsmax.fields("max2k")
set rsmax = nothing
set SQLMax = nothing
Randomize
randomtall = rnd * varAntallMax-1
randomtall = cint(randomtall)
SQL = "select * from myTable where ID > " & randomtall & " ORDER BY ID"
set rs = Conn.Execute(SQL)
Rs.MoveFirst

If not Rs.Eof then
	ID = Rs.Fields("ID")
	Navn = Rs.Fields("Navn")
	Innhold = Rs.Fields("Innhold")
End If
Conn.Close
set rs = Nothing
set SQL = Nothing
Sist endret av canonix; 12. april 2002 kl. 09:48.