Lorenzo Benaglia


Storie di un SQLlaro mannaro...
Home Blogs | Home | Login | Contact | My Profile | RSS | About | Cerca

Ordinamento casuale in Microsoft Access

Questa sera nel rispondere ad una domanda apparsa sul newsgroup microsoft.public.it.sql che chiedeva come sia possibile generare un result set ordinato in modo casuale in Microsoft Access, mi è capitata in mano una vecchia risposta che diedi un paio di anni fa.Nel rileggerla ho trovato interessante la soluzione proposta, così ho pensato di inserirla nel mio blog.Vediamo di che si tratta. In SQL Server è piuttosto semplice ottenere un result set ordinato in modo casuale, ad esempio spec 
Leggi tutto il post...
Categoria: Access
giovedì, 23 giu 2005 Ore. 23.45

Scrivi un commento

Nome:
Blog:
E-Mail:
(l'indirizzo e-mail non verrà pubblicato, consente di essere avvertiti quando arrivano nuovi commenti a questo Post)
Codice:
Corpo:
Cookie:

Commenti

Autore: GiorgioInviato il: 14 lug 2005 - 17.22
Ciao,
sull'ordinamento casuele in Access si trova di tutto tranne una cosa: che fare se nella tabella non si dispone di un Id univoco intero?
Nella mia tabella la chiave primaria è un Text(13) e quindi non riesco ad applicare a questo campo nessuna funzione matematica.
In mancanza (ahimé) della funzione NewId() mi ci vorrebbe qualcosa che trasformi il campo alfanumerico in un campo Intero (come una funzione ASC ma applicata a tutta la stringa). Una specie di "codificazione" ma non so da dove cominciare. Che si può fare??
Grazie
Giorgio
Autore: Giorgio RancatiInviato il: 31 dic 2005 - 14.44
Passando un numero negativo alla funzione RND essa renderà sempre lo stesso valore, quindi, se passiamo un numero negativo che è sempre diverso, la funzione Rnd restituirà sempre un valore diverso.
Per ottenere un numero sempre diverso possiamo utilizzare la funzione Timer e sommare il suo valore all'Id della tabella.
Esempio:
----
SELECT TOP 10 ProductName
FROM Products
ORDER BY Rnd((ProductID+Timer())*-1)
-----
La funzione Timer rende il numero di secondi trascorsi dalla mezzanotte, la sua precisione è al centesimo di secondo, quindi difficilmente riusciremo ad eseguire la query più volte nello stesso istante.

Giorgio Rancati
Autore: LorenzoInviato il: 31 dic 2005 - 14.50
Grazie Giorgio per aver fornito questa soluzione sicuramente più elegante di quella proposta.
Ricordo che me ne parlasti lo stesso giorno in cui scrissi questo post... meglio tardi che mai :-D

Colgo l'occasione per farti i miei più sinceri Auguri per un radioso 2006 :-)

Ciao!


Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003