218 messaggi dal 01 maggio 2003
www.lucasweb.it
Come faccio a estrarre un record in maniera casuale con la funzione random?
Il database ha 18 record.

http://www.lucasweb.it
web design & development
181 messaggi dal 06 luglio 2001
Anche io ho avuto questa esigenza in passato e l'ho risolta nel seguente modo.
Genero un numero intero compreso fra 1 e il massimo id del database.
Poi estraggo dal DB usando l'id casuale generato.

Ecco il codice:

' Cerco il massimo id nella tabella
strsql = "SELECT max(id) AS maxid FROM tabella"
set RS = objconn.execute(strsql)
intmaxid = RS("maxid")

' Numero casuale compreso fra 1 e massimo id
randomize
randomid = int(rnd() * intmaxid) + 1
strsql = "SELECT campo1, campo2 FROM tabella WHERE id = " & randomid
set RS = objconn.execute(strsql)


Questo è fatto per un DB di cui non conosci a priori il massimo id. Se tu ne hai 18 fissi allora puoi evitare la prima parte di codice e settare direttamente intmaxid = 18.
Unico difetto è che nel database non ci possono essere "buchi", ovvero devono esserci tutti gli id compresi fra 1 e l'id massimo.
Se così non è rischi che il codice tenti di accedere ad un record inesistente.

Ciao
Baxeico

-- Sciusciá e sciurbí nu se pö --
879 messaggi dal 09 luglio 2002
www.i-studio.it
C'e' anche un'altra tecnica che non si "appoggia" agli ID dei record. Si tratta di fare una select su tutti i record e usare il metodo "move" del recordset che ti sposta su un determinato record:
strsql = "SELECT * FROM tabella" 
set rs = Server.CreateObject("ADODB.RecordSet")
rs.open objconn, sql
numRecords = rs.RecordCount

' Numero casuale compreso fra 1 e numRecords
randomize 
n_record = int(rnd() * numRecords) + 1 

' Ti sposti al record n_record partendo dal primo
rs.move n_record, 1
...


Ciao
Alex

Internetworking Studio Srl
www.i-studio.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.