Newsgroup: it.comp.appl.access
Titolo: Mischiare i record in maniera casuale, ogni volta che si apre la maschera.

Access 2002.
                    Ciao,
        in una maschera che rappresenta i record di una tabella mediante 
queri interna č possibile fare in modo che i record ad ogni apertura si 
mischino fra loro in modo casuale, senza seguire un criterio fisso che 
faccia ripresentare gli stessi nello stesso modo?
        Fare ciň, mi servirebbe per presentare all'utente ( miei colleghi 
piloti) i test di volo sempre in ordine diverso, in modo da rendere un pň 
piů difficoltoso e interessante lo svolgimento dei test.
        Per ora, non riuscendo in altro modo, mi son limitato a dare un 
ordinamento dei campi un pocchino incasinato, ma ovviamente se non varia il 
numero dei test, verranno rappresentati sě disordinati, ma sempre allo 
stesso modo.
        Mille grazie
                        Bruno 

 ha scritto nel messaggio
news:47JWd.626328$b5.28...@news3.tin.it...

Ciao Bruno,
la tua tabella ha un campo (numerico o tipo contatore) che identifica in
modo univoco le righe ?
se sě puoi mettere questa ORDER BY e ogni volta le righe verranno mostrate
con un ordinamento casuale.
----------------
ORDER BY CLng(Rnd(([ID]+Timer())*-1)*10000)
----------------
ID nell'esempio č l'Identificativo della riga.
Ciao Giorgio

 ha scritto nel 
messaggio news:422b60e2$0$32345$5fc...@news.tiscali.it...

-----------------------------------------------------------------------
Giorgio, mille grazie.
Il campo ID contatore lo faccio subito in quanto non esiste, esistono perň 
due campi; uno identifica l'argomento e uno identifica in numero progressivo 
della domanda. E' piů semplice fare l'ID contatore e usare la riga da te 
inviatami.
Domanda:
La riga inviatami la devo inserire per forza nell'SQL o c'e il modo di farlo 
anche nel campo ID a vista nella query?
Scusa la mia ignoranza.
Ancora grazie
    Bruno
 

 anche nel campo ID a vista nella query?
si, puoi iserire in una colonna vuota
-------------
CLng(Rnd(([ID]+Timer())*-1)*10000)
-------------
quindi togliere la spunta a *Mostra* e poi scegliere il tipo di ordinamento
crescente o decrescente.
Ciao Giorgio


----------------------------------------------------------------
Giorgio!
Gran bella cosa.
Ciao
    e GRAZIE
    Bruno 


Non così bella. Non funziona bene.
Osserva la sequenza dei numeri generati, e noterai che le sequenze interne
sono strane, a volte ripetitive, e l'intera sequenza ritorna dopo un certo
periodo.
Io ho creato una tabella con 22 record, e mi sono annotato le sequenze
restituite. Ho notato che le sequenze dopo cinque o sei volte ritornavano, e
ho anche notato che in realtà si tratta di una trasposizione della stessa
sequenza, cioè una certa quantità di numeri alla fine viene spostata
all'inizio di volta in volta. Inoltre ho anche notato che all'interno della
sequenza ci sono gruppi ripetitivi che vanno di 4 numeri in 4 numeri (4, 8,
12, 16 oppure 5, 9, 13, 17). Riporto le prime sette sequenze complete
restituite:
11, 15, 19, 4, 8, 12, 16, 1, 20, 5, 9, 13, 17, 2, 21, 6, 10, 14, 18, 3, 22,
7
19, 4, 8, 12, 16, 1, 20, 5, 9, 13, 17, 2, 21, 6, 10, 14, 18, 3, 22, 7, 11,
15
7, 11, 15, 19, 4, 8, 12, 16, 1, 20, 5, 9, 13, 17, 2, 21, 6, 10, 14, 18, 3,
22
9, 13, 17, 2, 21, 6, 10, 14, 18, 3, 22, 7, 11, 15, 19, 4, 8, 12, 16, 1, 20,
5
21, 6, 10, 14, 18, 3, 22, 7, 11, 15, 19, 4, 8, 12, 16, 1, 20, 5, 9, 13, 17,
2
18, 3, 22, 7, 11, 15, 19, 4, 8, 12, 16, 1, 20, 5, 9, 13, 17, 2, 21, 6, 10,
14
3, 22, 7, 11, 15, 19, 4, 8, 12, 16, 1, 20, 5, 9, 13, 17, 2, 21, 6, 10, 14,
18
Dopo aver trascritto la settima sequenza, avevo già incontrato altre due
volte la prima e una volta la terza. Inoltre sono palesemente sequenze non
casuali.
In VB e VBA si utilizza l'istruzione Randomize prima di Rnd() per
inizializzare il generatore di numeri casuali, ma in una query non saprei
come fare. Guardate un po' voi...
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 come fare. Guardate un po' voi...
Ciao yronium,
un surrogato dell'istruzione Randomize č il timer moltiplicato per -1.
Effettivamente con cosě pochi record si possono presentare parti di sequenze
uguali
Prova Cosě
---------------
Rnd([ID] Mod Timer()*-1)
---------------
Ciao Giorgio

 >
con ID piccoli č meglio cosě
-----------
 Rnd((Timer() Mod [ID])*-1)
------------
Dovendo forzare il calcolo del numero casuale č necessario eseguire
un'operazione con un campo della tabella.
Il calcolo va ottimizzato in base al delta di numeri presenti nella tabella
stessa.
Ciao Giorgio