16 messaggi dal 21 gennaio 2003
Salve a tutti,
ho un problema che non riesco a risolvere, devo estrarre 5 record in modo casuale da un databse access, ma nn credo che esista una funzione sql che faccia al caso mio. Ho pensato di usare un numero random generato sia con il numero di record presenti nel databse sia con il valore più alto della chiave primaria del dB, ma è possibile che il valore generato non corrisponda ad alcun record e generi un errore e facendo un ciclo questo appesantisce lo script in maniera assurda se sono presenti pochi record. Qualcuno mi può dare una mano??
2.410 messaggi dal 13 febbraio 2003
Contributi
certamente che esiste la funzione per i numeri casuali ed è RND() e puoi utilizzarla direttamente nel codice sql

Per specificare il range puoi utilizzare questo codice

Int((valoremax - valoremin + 1) * Rnd + valoremin)
16 messaggi dal 21 gennaio 2003
Si certo, ma non è detto che il numero cosi generato corrisponda ad un record. Quindi può dare un errore.
Ho pensato di risolvere in questo modo:
Genero dei numeri casuali e li associo al nome delle colonne, poi faccio un order by associato alla variabile cosi generata... non è sicuramente la stessa cosa di una estrazione puramente casuale ma garantisce una certa variazione dei record.

random= Cint(rnd*2)
If random= 0 Then
tabella= "Idprodotto"
End If
If random= 1 Then
tabella= "prezzo"
End If
If random= 2 Then
tabella= "Desc_Sint"
End If ' e cosi via per tutte le colonne

random1= Cint(rnd*1)
If random2= 0 Then
Order= "Asc"
End If
If random2= 1 Then
Order= "Disc"
End If
' Mentre l'sql la costruisco cosi:
sql_prodotti = "select Top 5 * from prodotti order by "&tabella&" "&Order&""
Cosa ne dite?
593 messaggi dal 09 ottobre 2002
www.dotnetside.org
Ciao touchmedia,
sono sicuro che Daniele (forum admin) non se la prenderà ma posso consigliarti un post su un altro forum in cui, con un grande amico di Daniele, abbiamo affrontato una soluzione snella, elegante ed efficiente alla tua necessità.

Eccoti il link che ti consiglio di studiarti con molta attenzione:
http://forum.aruba.it/forums/ultimatebb.php?ubb=get_topic;f=22;t=011470

Ciao

Pochi post. Anzi, quasi quasi spengo
http://www.dotnetside.org/
102 messaggi dal 23 giugno 2004
...scusate forse, come al solito non avrò capito il problema...
ma non è più semplice contare i record della tabella in questione conta=rs.recordcount e con il randomize generare un numero da 1 a conta... con il metodo rs.move posizione?

vi chiedo scusa se ho detto una cazz..ta
buon lavoro

Ciao e Grazie
PIXEL
593 messaggi dal 09 ottobre 2002
www.dotnetside.org
Bhe, caro pixel,
come sempre le strade da percorrere per puntare ad una soluzione possono essere diverse. Ma la logica e l'economia del sistema richiede che si scelga quella che a partità di risultato sia più facilmente eseguibile e meno onerosa di risorse.

Il metodo che tu suggerisci serve a contare il numero di records presenti nella tabella e con objRS.Move numero sposteresti il cursore alla posizione indicata e, fin qui in teoria tutto bene... Ma supponiamo di avere numerosi records e di dover estrarre un considerevole numero di questi... Dovresti iterare numerose volte l'estrazione di ogni singolo record e, insieme all'estrazione, elaborarne il codice di utilizzo.

In termini di risorse significherebbe uno spreco inutile.

Con la soluzione suggerita nel post indicato, otterresti lo stesso risultato in un colpo solo, il che, con un numero limitato di records comporterebbe poca differenza ma, in caso di grossi recordset...Pertanto la soluzione è quella ottimale alla luce della premessa fatta...

Buona giornata

Pochi post. Anzi, quasi quasi spengo
http://www.dotnetside.org/
102 messaggi dal 23 giugno 2004
Grazie VitoSulla per la risposta,
incuriosito dai post già sono alla ricerca di help per la spiegazione del getrow...

Buon lavoro

Ciao e Grazie
PIXEL
593 messaggi dal 09 ottobre 2002
www.dotnetside.org
Ciao pixel.

Se può servirti, in questo link ho spiegato come e quando impiegare il metodo .GetRows()

http://forum.aruba.it/cgi-bin/ultimatebb.cgi?ubb=get_topic;f=22;t=011300#000005

Ciao

Pochi post. Anzi, quasi quasi spengo
http://www.dotnetside.org/

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.