Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

generazione numero casuale da 1 a 50

274 views
Skip to first unread message

Fanciullo

unread,
May 15, 2010, 11:18:29 AM5/15/10
to
Ciao a tutti,
come faccio in una query ad ottenere un campo calcolato
che abbia numeri casuali solo da 1 a 50?


grazieee


@Alex

unread,
May 15, 2010, 12:04:49 PM5/15/10
to

Ti dice nulla la funzione RND...?????????

Leggi nell'Help... è tuo amico.

@Alex

Fanciullo

unread,
May 15, 2010, 12:54:47 PM5/15/10
to

"@Alex" <ik2...@libero.it> ha scritto nel messaggio
news:be80663c-7653-401e...@z33g2000vbb.googlegroups.com...

Leggi nell'Help... � tuo amico.

@Alex

Vero, fatto

MyValue = Int((6 * Rnd) + 1) ' Genera un valore casuale compreso tra 1 e 6.

non so se mi leggerai ancora, ma provo a chiederti una cosa meno sciocchina

in un report ho quattro 5 campi

2 Cottura pasta biscotto.

A 240�, 7-8 minuti

B 200�, 10-12 minuti

C 180�, 14-16 minuti

D 160�, 20 minuti


dovrei invertire ad ogni evento print l'origine delle caselle di
controllo in modo da avere per ogni record un ordine
diverso dei valori come nell'esempio


2 Cottura pasta biscotto.

C 180�, 14-16 minuti

B 200�, 10-12 minuti

D 160�, 20 minuti

A 240�, 7-8 minuti

� possibile cambiare via codice l'origine dei campi?

grazie


Carlo Costarella

unread,
May 15, 2010, 2:16:52 PM5/15/10
to

"Fanciullo" <vito...@libero.it> ha scritto nel messaggio
news:4beed1db$0$18990$4faf...@reader5.news.tin.it...
cut

> in un report ho quattro 5 campi
>
> 2 Cottura pasta biscotto.
>
> A 240�, 7-8 minuti
>
> B 200�, 10-12 minuti
>
> C 180�, 14-16 minuti
>
> D 160�, 20 minuti
>
>
> dovrei invertire ad ogni evento print l'origine delle caselle di
> controllo in modo da avere per ogni record un ordine
> diverso dei valori come nell'esempio
>
>
> 2 Cottura pasta biscotto.
>
> C 180�, 14-16 minuti
>
> B 200�, 10-12 minuti
>
> D 160�, 20 minuti
>
> A 240�, 7-8 minuti
>
> � possibile cambiare via codice l'origine dei campi?
>
> grazie

Pi� che cambiare l'origine dei campi (controlli) mi sembra che tu voglia
dare un ordinamento diverso.
Se � cos� potresti usare, per esempio, proprio la funzione Rnd abbinata ad
un recordset.
Questa funzione genera un numero casuale tra 1 e 100:
Public Function RandomizzaSequenza()
Dim i As Integer, ii As Integer
For ii = 1 To 6 ' se sono 6 i record che devi usare
i = Int((100 - 1 + 1) * Rnd + 1)
Randomize 1
Debug.Print i
Next ii
End Function
Il resto della funzione lo completi tu.

Ovviamente dovrai aggiungere un campo di tipo numerico alla tabella che
riempirai con i valori della funzione. Questi valori cambieranno ogni volta,
per cui se utilizzerai l'ordinamento crescente otterrai una lista sempre
diversa.

Ciao, Carlo


Fanciullo

unread,
May 15, 2010, 3:11:58 PM5/15/10
to

"Carlo Costarella" <carloco...@libero.it> ha scritto nel messaggio
news:hsmoej$kho$1...@tdi.cu.mi.it...
>Dunque Carlo,
per avere un campo con valori diversi non ci sono problemi. Ci sono
risciuscito per altre vie.

Premetto che spiegarsi e farlo in maniera breve e sintetica � difficile.
Gi� esprimere in parole semplici il mio problema � difficoltoso.

Premetto che sono un prof e tutto questo mi serve per non
far copiare i miei alunni durante il compito a crocette.

Comq credo di aver capito questo:
non mi serve un ordine casuale dei record cos� che durante la stampa del
report
ho un ordine sempre differente dei record.

Dovrei modificare l'elenco dei campi per ogni record!!

provo ancora:

IL PRIMO RECORD HA 5 CAMPI (una domanda e 4 risposte)
le quattro risposte sono rappresentate da 4 campi
A
B
C
D

..........e cos� via per 50 record.
dunque stampo le prime 50 domande per il primo alunno.

Quando stampo le seconde 50 domande (il report la seconda volta)
vorrei questo:

IL PRIMO RECORD HA 5 CAMPI (una domanda e 4 risposte)
le quattro risposte sono rappresentate da 4 campi presentati
diversamente
B
A
D
C

insomma vorrei scombinargli la sequenza delle risposte in modo
che non se le possano passare facilmente con un semplice segno.

Grazie Carlo

Carlo Costarella

unread,
May 16, 2010, 1:18:05 AM5/16/10
to

"Fanciullo" <vito...@libero.it> ha scritto nel messaggio
news:4beef202$0$12129$4faf...@reader4.news.tin.it...

Le risposte devono stare in verticale e non in orizzontale.
Mi spiego: due tabelle, Domande e Risposte con join uno a molti sulla chiave
comune.
Tabella domande: ID (numerico chiaveprimaria), Domanda
Tabella Risposte; IDRisposta, IDDomanda (numerico elemento di join),
Risposta (testo), Corretta (S�/No), Ordine (numerico).
In questo modo ti sar� molto facile usare il campo Ordine per sistemare le
risposte sempre in "ordine" diverso, magari con l'esempio che ti proponevo
prima.
Per come hai strutturato il db � anche possibile raggiungere lo stesso
risultato ma � molto pi� difficile.
Che ne pensi?
Ciao, Carlo


Fanciullo

unread,
May 16, 2010, 3:40:55 AM5/16/10
to

"Carlo Costarella" <carloco...@libero.it> ha scritto nel messaggio
news:hsnv6b$q2n$1...@tdi.cu.mi.it...
>credo che sia l'unica soluzione praticabile, anche perch� avevo pensato
che le caselle di testo nel report avessero la propriet�
RecordSource........
quindi gliela cambiamo in maniera dinamica, .invece pare di no.

Per� ho un piccolo problemino. Le 50 risposte in orizzontale
come posso trasferirle in verticale non manualmente nella seconda
tabella????

campoA campoB campoC campoD
togli sale metti sale taglia sale spargi sale

CAMPORISPOSTE
togli sale
metti sale
taglia sale
spargi sale

ciao


Carlo Costarella

unread,
May 16, 2010, 9:12:04 AM5/16/10
to

"Fanciullo" <vito...@libero.it> ha scritto nel messaggio
news:4befa18c$0$31380$4faf...@reader1.news.tin.it...
cut

Se ho ben capito hai poca dimestichezza con il codice...Se � cos� seguiamo
una strada pi� percorribile.
Prima di tutto ti serve una chiave primaria nella tabella domande...Immagino
sia gia presente.
La tabella Risposte deve contenere i campi che ti ho gi� descritto.
Apri la tabella Domande in una query e inserisci solo il campo ID (se questo
� il nome della chiave primaria) e il campoA che rinomini per esempio in
Fil:CampoA (scrivi proprio cos� nella colonna del campoA e sempre che il
campo si chiami cos�), salvi la query con il nome Queri10 (� solo un
esempio); poi togli il campoA e inserisci il CampoB (Fil:CampoB) e salvi la
query come Query11...Cos� via fino alla fine dei campi che contengono le
domande (immagino 4 o 5, quindi Query12 e Query13).
Ora apri una query vuota, senza alcuna tabella e dal men� visualizza scegli
visualizzazione sql. Qui scrivi questo:
SELECT * from Query10 union all select * from Query11 union all select *
from query12 UNION ALL select * from query13;
Cambia o aggiungi opportunamente i nomi dei campi rispettando la stessa
sintassi.
Salva la query con UQuery14 (o quello che preferisci). Ora usa questa query
per alimentare l'ennesima query che sar� una query di accodamento.
Ovviamente la tabella a cui accodare sar� la tabella Risposte. Accoderai il
campo ID al campo IDDomanda e il campo Fil al campo Risposta. Manda in
esecuzione la query e il gioco � fatto. Per essere ancora pi� preciso ordina
la query per l'ID crescente.
A questo punto e se tutto � andato a buon fine puoi verificare che ci siano
tutte le risposte e quindi cancellare i campiA-B-C ecc. dalla tabella
Domande.
Fai sempre una copia di sicurezza del database originale perch� non voglio
farti fare degli errori irreparabili.

Fammi sapere.
Ciao, Carlo


Fanciullo

unread,
May 16, 2010, 3:40:56 PM5/16/10
to

"Carlo Costarella" <carloco...@libero.it> ha scritto nel messaggio
news:hsoqv1$dhu$1...@tdi.cu.mi.it...
>A parte che � geniale come mi hai fatto accodare i campi A B C D con la
>query d'unione.

Ma non � finitaaaaaaaaaaaa, mi devi aiutare ancora.

ora nella tabella risposte ho

IDdomanda risposta ordine
1 con sale 0
1 senza sale 0
1 poco sale 0
1 molto sale 0
2 con pepe 0
2 senza pepe 0
2 poco pepe 0
2 molto pepe 0

come faccio io ora a dare un ordine diverso delle risposte per ogni
domanda??

La tua funzione dove la applico?? a una query di aggiornamento
che mi generi nel calmpo ordine per ogni record
un numero casuale da uno a quattro??

Public Function RandomizzaSequenza()
Dim i As Integer, ii As Integer

For ii = 1 To 4 ' se sono 4 i record che devi usare


i = Int((100 - 1 + 1) * Rnd + 1)
Randomize 1
Debug.Print i
Next ii
End Function

beh mi devi aiutare Carlo
ciao


Carlo Costarella

unread,
May 17, 2010, 1:27:58 AM5/17/10
to

"Fanciullo" <vito...@libero.it> ha scritto nel messaggio
news:4bf04a4d$0$18989$4faf...@reader5.news.tin.it...
cut

La funzione sopra descritta diventa:
Public Function RandomizzaSequenza()
Dim i As Integer, ii As Integer, iii As Integer, iiii As Integer
Dim Rcs As Recordset, RcsRisposte As Recordset
Set Rcs = CurrentDb.OpenRecordset("SELECT TRisposte.IDDomanda AS NID,
Count(TRisposte.Risposta) AS NRisposte FROM TRisposte GROUP BY
TRisposte.IDDomanda;")
Rcs.MoveLast
Rcs.MoveFirst
For iii = 1 To Rcs.RecordCount
For ii = 1 To Rcs!Nrisposte
Randomize 1
Set RcsRisposte = CurrentDb.OpenRecordset("SELECT TRisposte.* FROM
TRisposte WHERE (((TRisposte.IDDomanda)= " & Rcs!Nid & "));")
RcsRisposte.MoveLast
RcsRisposte.MoveFirst
For iiii = 1 To RcsRisposte.RecordCount
With RcsRisposte


i = Int((100 - 1 + 1) * Rnd + 1)

.Edit
!ordine = i
.Update
End With
RcsRisposte.MoveNext
Next iiii
RcsRisposte.Close
Set RcsRisposte = Nothing
Next ii
Rcs.MoveNext
Next iii
Rcs.Close
Set Rcs = Nothing

End Function

Tutto ci� funziona se i nomi dei campi sono questi e la tabella si chiama
TRisposte, altrimenti dovrai opportunamente cambiarli.
Il codice, la funzione, prevede che tu abbia nei riferimenti DAO. Inserisci
la funzione in un modulo pubblico e potrai chiamarla, per esempio, prima
della apertura del report con RandomizzaSequenza.
Qualora nel campo "Ordine" dovessi trovare numeri uguali non � un problema
perch� comunque la sequenza cambier� ogni volta e se nel report ordini il
campo "Ordine" a crescente tutto funzionera alla grande.

Fammi sapere.
Ciao, Carlo


Fanciullo

unread,
May 17, 2010, 3:39:12 PM5/17/10
to

"Carlo Costarella" <carloco...@libero.it> ha scritto nel messaggio
news:hsqk4q$l7e$1...@tdi.cu.mi.it...
>Allora ti dico che ha funzionato tutto. La funzione non l'ho capita manco
tanto bene.
Per� ho notato che rallentava abbastanza il caricamento del report.
Cos� ho cambiato la generazione del campo ORDINE.

L'ho fatto con un campo calcolato in una query, cos� � risultato pi� tutto
veloce.

Se ci tieni puoi dare una occhiata al file scaricandolo dal sito della mia
scuola
a questo indirizzo (cos� vedi un p� come si muovono questi allievi-access,
no?)

http://www.istitutoalberghieroabano.it/index.php?option=com_content&view=article&id=184&Itemid=37

grazie mille Carlo


Roberto

unread,
May 17, 2010, 3:54:23 PM5/17/10
to
> Se ci tieni puoi dare una occhiata al file scaricandolo dal sito della mia
> scuola
> a questo indirizzo (così vedi un pò come si muovono questi allievi-access,
> no?)
>
> http://www.istitutoalberghieroabano.it/index.php?option=com_content&v...

però la ricetta della paella devi postarla ...

Fanciullo

unread,
May 17, 2010, 5:24:44 PM5/17/10
to

"Roberto" <erre...@yahoo.it> ha scritto nel messaggio
news:e6e209e1-d6b2-48c6...@40g2000vbr.googlegroups.com...

> Se ci tieni puoi dare una occhiata al file scaricandolo dal sito della mia
> scuola
> a questo indirizzo (cos� vedi un p� come si muovono questi allievi-access,
> no?)
>
> http://www.istitutoalberghieroabano.it/index.php?option=com_content&v...

per� la ricetta della paella devi postarla ...

Ecco la ricetta per Roberto e non solo.............mo' voglio vedere!!!


Carlo Costarella

unread,
May 17, 2010, 11:52:26 PM5/17/10
to

"Fanciullo" <vito...@libero.it> ha scritto nel messaggio
news:4bf19b66$0$12130$4faf...@reader4.news.tin.it...
>
cut

>>Allora ti dico che ha funzionato tutto. La funzione non l'ho capita manco
> tanto bene.
> Per� ho notato che rallentava abbastanza il caricamento del report.
> Cos� ho cambiato la generazione del campo ORDINE.
>
> L'ho fatto con un campo calcolato in una query, cos� � risultato pi� tutto
> veloce.
>
> Se ci tieni puoi dare una occhiata al file scaricandolo dal sito della mia
> scuola
> a questo indirizzo (cos� vedi un p� come si muovono questi allievi-access,
> no?)
>
> http://www.istitutoalberghieroabano.it/index.php?option=com_content&view=article&id=184&Itemid=37
>
> grazie mille Carlo

Prego, grazie a te per il feedback.
Ho visto il lavoro e devo dire che mi sembra molto ben fatto. La scelta
della query � sicuramente quella giusta.
Perch� non pubblichi il lavoro sui siti collegati? Potrebbe essere d'aiuto a
chi ha bisogno di un questionario a risposta multipla; magari aggiungendo
una maschera di inserimento per le domande e le risposte.

Ciao, Carlo


Fanciullo

unread,
May 18, 2010, 1:34:16 AM5/18/10
to

"Carlo Costarella" <carloco...@libero.it> ha scritto nel messaggio
news:hst2tj$pv4$1...@tdi.cu.mi.it...
>Certo, ma mi sembrava poca cosa. Ma non so come si fa a pubblicarlo, tanto
>per cambiare.

Certo devo completarlo di maschera di inserimento.. e lo far�.

Ciao, se hai due righe per indicarmi come mettere il file a disposizione ti
ringrazio.....


Carlo Costarella

unread,
May 18, 2010, 12:36:25 PM5/18/10
to

"Fanciullo" <vito...@libero.it> ha scritto nel messaggio
news:4bf226de$0$12129$4faf...@reader4.news.tin.it...
cut

> Ciao, se hai due righe per indicarmi come mettere il file a disposizione
> ti
> ringrazio.....

Per esempio su:
http://www.accessgroup.it/Homeindex.asp
http://www.alessandrobaraldi.it/
http://www.sitocomune.com/

Vedi che trovi tutte le indicazioni...D'altra parte i webmaster sono assidui
frequentatori di questo NG.

Ciao, Carlo


vr5...@gmail.com

unread,
May 1, 2014, 10:15:29 AM5/1/14
to
0 new messages