grazieee
Ti dice nulla la funzione RND...?????????
Leggi nell'Help... è tuo amico.
@Alex
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
> 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
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
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
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
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
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
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
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
però la ricetta della paella devi postarla ...
per� la ricetta della paella devi postarla ...
Ecco la ricetta per Roberto e non solo.............mo' voglio vedere!!!
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
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.....
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