Newsgroup: it.comp.appl.access
Titolo: In quale cavolo di evento devo inserire il codice per...

Salve a tutti.
Non riesco a risolvere questo problema e scusate il Post vago perň...
Ho una maschera, chiamiamola Maschera Soci, associata alla tabella Soci, con
una sottomaschera, chiamiamola Curriculum Sportivo, associata ad una tabella
Prestazioni. Il collegamento tra le due tabelle č uno a molti.
Io seleziono il Socio, poi vado nella sottomaschera e inserisco (schede
multiple) scorro e inserisco vari dati.
Quando stampo il curruculum personale di ogni socio con un report ho
l'elenco delle gare effettuate e del risultato.
Vorrei intervenire sull'ordine di visualizzazione (e di stampa) dei vari
dati.
Ci sarebbe un campo data e la possibilitŕ di ordinare cronologicamente con
la query ma per ragioni lunghe da spiegare non voglio usare questo criterio.
Ho inserito allora un campo (e un relativo controllo nella sottomaschera) in
cui andrŕ riportato un numero progressivo che farŕ poi da ordinatore.
Tale numero cresce di 10 in dieci in modo che se ho dimenticato di inserire
un dato lo numero per es. 15 e cosě me lo trovo tra 10 e 20.
Chi ha usato il vecchio Basic ha capito perfettamente il criterio.
Tale numero mi vienne inserito automaticamente ogni volta che aggiungo un
record nella sottomaschera, salva la possibilitŕ di modificarlo manualmente.
Ovviamente se apro e chiudo le maschere (in pratica se riprendo ad inserire
dati il giorno dopo) il Numero (chiamiamolo l'Ordinatore per capirci)
dovrebbe riprendere ripartire dal piů alto (io uso DMax e funziona).
PERO' e qui mi casca l'asino, se cambio record nella maschera principale per
intervenure su un altro dato (su un altro Socio) non riesco a ricalcolare il
nuovo Ordinatore. Cioč il Numero mi rimane quello calcolato la prima volta
con DMax  e continua a crescere.
L'ho fatta lunga, ma il probela č: in quale cavolo di evento devo inserire
il codice per ricalcolare questo Ordinatore se cambio il record nella
maschera principale? Con Current non funziona e neanche con UpDate.
Se sono stato chiaro e qualcuno č in grado di aiutarmi grazie miltissime.
Filippo

Se non ho capito male il campo "Ordinatore" parte da 10 per ogni Socio
e cresce di 10 in 10 ad ogni inserimento di un record Prestazioni
relativo ad un determinato Socio, partendo ogni volta dall'ultimo
valore assegnato ad Ordinatore *** per il socio selezionato ***.
Se è così il tuo problema non dipende da *dove* calcoli Ordinatore, ma
da *come*.
L'espressione di Dmax() che dovresti utilizzare è del tipo:
Ordinatore=10+nz(Dmax("Ordinatore","Prestazioni","CD_Socio=" &
ID_Socio),0)
Dove ID_Socio è l'identificatore del socio attualmente selezionato
nella maschera principale e CD_Socio è il campo del record Prestazioni
che contiene l'identificativo del socio a cui esso è correlato.
Vincenzo Turturro
---------------------------------------------
il sito comune di it.comp.appl.access:
http://www.sitocomune.com/
---------------------------------------------
E quello di it.comp.as400:
http://www.faq400.com/
---------------------------------------------

 Vincenzo Turturro
Hai capito perfettamente il problema.
Non solo, la soluzione da te suggerita funziona perfettamente, anche se
somiglia molto alla mia che non funzionava.
Tanto per capire qualcosa, io usavo lo quasi lo stesso codice ma con queste
differenze:
poiché non mi pareva il caso di ricalcolare ogni volta Ordinatore fintanto
che stavo aggiungendo dati allo stesso socio, avevo dichiarato la variabile
Ordinatore Static (nella SUB evento_Update), la calcolavo soltanto la prima
volta con una Variabile Boolean che cambiava (If GiaFatto=False then e qui
calcolavo Ordinatore poi settavo GiaFatto a True) e per le volte successive
mi limitavo a dire Ordinatore = Ordinatore + 10.
Quando cambiavo il socio, nella Maschera Principale, evento Current,
GiaFatto ritornava False in modo da riaprire i calcoli.
E così non mi funzionava. Dove sbagliavo?
E, tanto per imparare, non si può prescindere da calcolare Ordinatore ogni
volta nell'ambito dello stesso Socio, visto che sarà per forza il valore
calcolato in precedenza aumentato di dieci?
Comunque grazie.
Filippo

 Non riesco a risolvere questo problema e scusate il Post vago perň...
Magari fossero tutti cosě i subject
Antonio

calcolato in precedenza aumentato di dieci?
Ogni volta che lo calcoli potresti "appoggiarlo" in un controllo
invisibile della maschera principale, da inizializzare la prima volta
con il valore restituito da Dmax() e successivamente da incrementare
di 10 ogni volta che aggiungi una prestazione.
