Newsgroup: it.comp.appl.access
Titolo: Permutazione su tutte le domande

Salve a tutti sono Roberto, vi pongo un quesito.
Ho una maschera principale che si chiama MQuiz e che contiene un gruppo di
opzioni il cui nome elemento è':
<<grQuiz>>.
Questo gruppo di opzioni conntiene 3 opzioni i cui nomi elemento sono:
<<Quiz_A>>, <<Quiz_B>>, <<Quiz_C>>.
Selezionando una delle 3 e poi premendo su OK che ho creato sulla maschera
si apre un'altra maschera che ho chiamato: 
<<MMQuiz>>.
La <<MMQuiz>> ha come origine dei dati la query <<QQuiz>> che quando si
esegue estrae dalla tabella <<TQuiz>>, dove risiedono i dati,
10 domande in maniera casuale.
La <<MMQuiz>> contiene un gruppo di opzioni il cui nome elemento è
<<Risposte>> che consta di 4 opzioni:
Il Cerchietto di opzione ha i seguenti nomi :
<<Valore1>>, <<Valore2>>, <<Valore3>>, <<Valore4>>
le rispettive etichette (DOVE VERRANNO VISUALIZZATE LE RISPOSTE):
<<Risposta1>>, <<Risposta2>>, <<Risposta3>>, <<Risposta4>>.
All'apertura della maschera, <<MMQuiz>> saranno come detto prima
selezionate 10 in maniera casuale grazie alla <<QQuiz>>, ed in virtù della
seguente routine nell'evento della maschera <<Form_Current()>>, 
*********************************************************
Private Sub Form_Current()
Me!NDomanda = Me.CurrentRecord
If Not Me.NewRecord Then
Dim a(4) As Byte, i As Byte
Randomize Timer
a(1) = Int(Rnd * 4) + 1
Do: a(2) = Int(Rnd * 4) + 1: Loop While a(2) = a(1)
Do: a(3) = Int(Rnd * 4) + 1: Loop While a(3) = a(1) Or a(3) = a(2)
a(4) = 10 - a(1) - a(2) - a(3)
For i = 1 To 4
Me("risposta" & Format(i, "0")).Caption = _
Me("risp_" & Format(a(i), "0"))
Me("valore" & Format(i, "0")).OptionValue = a(i)
Next
End If
************************************************************
la posizione delle risposte cambierà cioè si mescoleranno tra loro
inquanto la tabella <<TQuiz>> consta dei seguenti campi:
-------------------------------------------------------------------------------
Tipo
CodDomanda
Domanda
Risp_1 ------------------> Questa è sempre quella esatta
Risp_2
Risp_3
Risp_4
-------------------------------------------------------------------------------
Ecco perchè la necessità di far permutare la posizione delle risposte
nella <<MMQuiz>>.
Fin qui tutto funziona correttamente.
Adesso ho la necessità ti togliere dalla query <<QQuiz>> la condizione di
selezionare le 10 DOMANDE CASUALI, cioè che quando la eseguo mi visualizzi
tutte le domande
a seconda del quiz scelto ovvero <<Quiz_A>>, o <<Quiz_B>>, o <<Quiz_C>>;
faccio un esempio se nella <<MQuiz>> suppongo di scegliere l'opzione:
<<Quiz_C>> premendo il tasto OK, mi verrà visualizzata la maschera <<MMQuiz>>
con TUTTE le domande di <<Quiz_C>>, in maniera crescente.
Ci siamo .....Quasi eee..
La mia domanda è questa come posso modificare la routine di cui sopra
affinchè tutte le risposte per ciascuna domanda cambino la loro posizione ?
Ricordo che la <<Risp_1>> è sempre quella esatta.
Nb. Il campo Tipo puo avere 3 valori:
1 se si tratta delle domade di <<Quiz_A>> (contiene 7172 domande)
2 se si tratta delle domade di <<Quiz_B>> (contiene 5335 domande)
3 se si tratta delle domade di <<Quiz_C>> (contiene 3093 domande).
Ciao grazie !! **************Buon inizio ESTATE
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! a
tutti!!!!!!!!!!!!!!!!!!!!!!!!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel
messaggio news:cb5tdb$op8$1...@news.newsland.it...

Confesso di essermi un pò perso, ma cosa ti vieta
di attribuire un recordsource diverso a seconda di
ciò che ti serve?
MAssimiliano

RobertoAc ha scritto:




Mi ricordo di questo problema. Impostata così la maschera permuta la
posizione di qualsiasi domanda le venga passata per cui ti basta
sostituire (anche da codice) alla query origine dati un'altra query che
invece di selezionare 10 record a caso prenda tutti quelli di un certo
tipo, come in
  SELECT * FROM TQuiz WHERE tipo=2;
Namor
-- 
namor at inwind punto it


 RobertoAc ha scritto:





*************************************************************
Ma facendo così la stringa di quella routine:
a(4) = 10 - a(1) - a(2) - a(3)
non mi darebbe un errore ?
Credo che quel 10 si riferisca alle 10 domande casuali selezionate dalla
QQuiz.
**************************************
-- 


 QQuiz.
No, si riferisce alla somma di 1+2+3+4.
Visto che devono essere generati casualmente per ciascuna delle 4 risposte
i numeri corrispondenti alla posizione in cui metterla, e che vengono
numerati da 1 a 4, il primo numero è calcolato semplicemente con Int(Rnd *
4) + 1. Il secondo numero è calcolato alla stessa maniera ma se risulta
essere uguale al primo dovrà essere generato un nuovo valore casuale,
questo finchè non si ottiene un valore valido. Da qui il ciclo Do...Loop.
Stesso discorso per il terzo numero, solo che dovrà essere diverso sia dal
1° che dal 2°.
Una volta generati i primi 3 numeri, il quarto può assumere un unico
valore, quindi non ha senso ripetere il ciclo finchè viene generato
casualmente il valore corretto, basta calcolarlo con quella formula,
togliendo dal totale dei 4 valori (10) i 3 numeri già calcolati.
Se avessi avuto 6 valori invece che 4 avresti fatto 21-a(1)-a(2)-...-a(6),
perchè 21 è la somma dei numeri da 1 a 6.
Puoi assegnare tranquillamente la nuova origine dati alla maschera.
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 


 [cut]




*****************************************************
Ok Namor funziona tutto a meno di una piccola cosa fastidiosa e cioè che
quando avvio la maschera <<MMQuiz>> il gruppo di opzioni delle risposte mi
fa gia vedere una opzione selezionata ed invece voglio che le opzioni
devono essere vuote cioè non selezionate ogni volta che passo alla domanda
successiva.
Ho provato nelle proprietà del gruppo di opzione a rendere vuoto il valore
predefinito ma non funziona. E' possibile fare qualcosa da codice ?
-- 


 predefinito ma non funziona. E' possibile fare qualcosa da codice ?
Sempre su Form_current, come prima istruzione imposti il valore del gruppo
di opzioni a zero.
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 


 Namor
***********************
Grazie mille funziona !!!!!!
-- 
