Newsgroup: it.comp.appl.access
Titolo: Ricorsività di 3 campi riferiti ad un valore unico collegato

Ciao ragazzi e buon sabato.
Sto facendo una maschera "user oriented", ergo cerco di far  fare
all'utente il meno possibile.
Non per bontà, ma perchè voglio che utilizzino il tempo nel porre
attenzione ai dati più importanti. Di conseguenza
gli "complilo" in automatico dei dati in base al loro digitato.
Faccio quindi in modo che a fronte di 3 campi soggetti  ad un unico
riferimento temporale ( mese) e per tutti i mesi dell'anno, un 4°
campo vada a completarsi con il riferimento al meseInzio e meseFine.
Faccio un esempio per non intortarmi.
lbl[Gennaio]   lbl[Febbraio]      lbl[Marzo]
GennaioA      FebbraioA          MarzoA
100                     0                     20
GennaioB      FebbraioB          MarzoB    = Periodo Ordine [Gen-Mar]
100                     80                    0
GennaioC       FebbraioC          MarzoC
100                    0                       0
Per fare questo giochino e per fare in modo che l'utente veda
immediatamente cosa
sta facendo , utilizzo un sistema sicuramente empirico e poco
professionale che però mi da il risultato voluto.Mi appoggio ai vari
afterupdate dei vari campi, quindi:
GennaioA_afterupdate
if GennaioA Or GennaioB Or GennaioC  > 0 then
Me.MeseOrdineGen= left( Me.lblGennaio.Caption,3)
Else Me.MeseOrdine=""
End if
GennaioB_afterupdate
if GennaioB Or GennaioA Or GennaioC  > 0 then
Me.MeseOrdineGen= left( Me.lblGennaio.Caption,3)
Else Me.MeseOrdine=""
End if
GennaioC_afterupdate
if GennaioC Or GennaioB Or GennaioA  > 0 then
Me.MeseOrdineGen= left( Me.lblGennaio.Caption,3)
Else Me.MeseOrdine=""
End if
Questo perchè se non ci fosse questa ricorsione sui 3 campi  su
afterupdate, ogni singolo campo mi modificherebbe il valore di
MeseOrdineGen.
Questo per ogni singolo mese.
A questo punto, completato l'ordine mi verrà fuori in una casella
MesiOrdini su codice
Me.MesiOrdine= Me.MeseOrdineGen & Me.MeseOrdineFeb & Me.MeseOrdineMar
& etc...
[GenFebMar] cioè tutti i mesi utili concatenati
Nell'ultima operazione sulla casella [Periodo] , che è il valore  che
voglio far vedere al'utente, vado a fare:
Me.Periodo= left(Me.MesiOrdine,3) & "-" & right(Me.MesiOrdine,
3)..andando a prendere per l'appunto con le prime e le ultime tre
lettere (mese di partenza e mese di fine ) il periodo interessato [Gen-
Mar]
E' tutto perfetto e funziona alla grande , ma mi chiedo , vista la
lontananza da Vba per parecchio tempo, se non
esista una formula ricorsiva per fare tutto questo in modo
meno...artigianale ...
La cosa verrebbe bene allo stesso modo sull'evento "su corrente" della
maschera e anche con meno codice, ma per poter essere visualizzato
immediatamente dalll'utente occorre impostare un save record e un
Me.Refresh che , essendo i campi parecchi, porta un fastidioso
tremolio della maschera.
Esiste qualcosa di meglio ?
Ciao
Eddie

 ha scritto nel messaggio 
news:ba20c354-d14e-42e3...@k30g2000hse.googlegroups.com...














Ciao
Eddie
[risposta]
Vediamo se ho capito.
Tu crei una (chiamiamola) stringa dei mesi dove i valori contenuti sono >0?
Quindi tornando al tuo esempio risulta:
100(genB)-80(febB)-20(marA)
Giusto?
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggionews:ba20c354-d14e-42e3...@k30g2000hse.googlegroups.com...

Ciao Sergio
Esatto, solo che mi deve restituire il mese corrispettivo SOLO se
OGNUO  o QUALCUNO dei singoli campi Mese ( ho  3 prodotti per mese..
..chiamiamoli " FruttaGennaio-PastaGennaio-CarneGennaio" è superiore a
0 e quindi con un valore.
La routine ( chiamiamola cosi') esatta sarebbe, se mai esistesse
potrebbe essere:
Se ognuno o qualcuno dei campi " FruttaGennaio-PastaGennaio-
CarneGennaio"  risultasse >0
allora restituiscimi "Gennaio" & Se ognuno o qualcuno dei campi "
FruttaFebbraio-PastaFebbraio-CarneFebbraio"  risultasse >0
allora restituiscimi "Febbraio"..etc. Quando hai finito scrivimi nella
casella "periodo" il risultato dei mesi (Inizio-Fine) che hanno un
valore.
Non mi serve in qusta fase che mi restituisca i dettagli Frutta-Pasta-
Carne, ma che mi indichi solo in quale mese ho venduto uno dei tre
articoli.
Ciao
Eddie

 ha scritto nel messaggio
news:aa629a11-5378-4fe7...@l42g2000hsc.googlegroups.com...
Ciao Sergio
Esatto, solo che mi deve restituire il mese corrispettivo SOLO se
OGNUO  o QUALCUNO dei singoli campi Mese ( ho  3 prodotti per mese..
..chiamiamoli " FruttaGennaio-PastaGennaio-CarneGennaio" è superiore a
0 e quindi con un valore.
La routine ( chiamiamola cosi') esatta sarebbe, se mai esistesse
potrebbe essere:
Se ognuno o qualcuno dei campi " FruttaGennaio-PastaGennaio-
CarneGennaio"  risultasse >0
allora restituiscimi "Gennaio" & Se ognuno o qualcuno dei campi "
FruttaFebbraio-PastaFebbraio-CarneFebbraio"  risultasse >0
allora restituiscimi "Febbraio"..etc. Quando hai finito scrivimi nella
casella "periodo" il risultato dei mesi (Inizio-Fine) che hanno un
valore.
Non mi serve in qusta fase che mi restituisca i dettagli Frutta-Pasta-
Carne, ma che mi indichi solo in quale mese ho venduto uno dei tre
articoli.
Ciao
Eddie
[risposta]
Potresti togliere la gestione dell'evento per ogni casella di testo e creare
una nuova casella di testo (es. totGennaio) non associata con origine 
controllo:
iif(val(GennaioA)>0 or val(GennaioB)>0 or val(GennaioC)>0;"Gennaio";Null)
ripetuta per ogni serie A,B,C del mese.
Poi un'altra con l'origine controllo:
=[totGennaio] & "-" & [totFebbraio] & "-" & [totMarzo]
Ciao.
-- 
Sergio MAZZA