restituisci n record random (casuale) - funzione rnd

Anonimo
2013-12-03T23:21:25+00:00

in un tabella/query con i seguenti campi:

Id

-Categoria

-Prodotti

Vorrei potere selezionare le categorie (e fin qui ci sono con icriteri) e un numero definito ad esempio 12 record in maniera casuale del campo proodtti

come posso fare?

Posso usare la funzione rnd e se si come?

grazie a tutti

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-12-04T11:53:14+00:00

Ciao Gianfranco,

leggi attentamente questo articolo: Come trovare N record in ordine casuale

ha solo un problema, la prima volta che si esegue la query dopo aver aperto Access. la query rende sempre lo stesso risultato.

anni fa avevo trovato una soluzione tipo questa:

Rnd((Timer()-Timer()/500+[Id])*-1)

ovvero aggiungere un numero che varia in ogni istante ovvero Timer() per poi rendere il tutto negativo.

in pratica il codice Sql della tua query diventa:


SELECT TOP 12 *

FROM Prodotti

ORDER BY Rnd((Timer()-Timer()/500+[Id])*-1);


Per maggiori delucidazioni sul numero negativo cerca la funzione RND() nel manuale di VBA per access.

Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

6 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-12-12T13:19:22+00:00

    Ciao Giorgio alla luce di quanto scritto in precedenza, sto utilizzando:

    SELECT TOP 5 * FROM [tableName] ORDER BY rnd(INT(NOW*id)-NOW*id)

    cosi restituisce tutti i campi, avrei necessita di vedere solo il campo id, come posso fare?

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-12-05T18:55:09+00:00

    ok nuovamente grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-12-05T15:59:35+00:00

    Ciao Gianfranco,

    in pratica è la stessa soluzione, devi solo provarla per bene.

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-12-05T12:41:42+00:00

    Grazie mille Giorgio.

    ho trovato questo cosa ne pensi sembra funzionare, quali sono secondo tè i contro se ci sono:

    SELECT TOP 12 *

    FROM [mia tabella]

    ORDER BY Rnd(Int(Now()*id)-Now()*id);

    La risposta è stata utile?

    0 commenti Nessun commento