Newsgroup: it.comp.appl.access
Titolo: Calcolo in base a data

Buondi', in una maschera ho, tra gli altri, i seguenti campi:
- data (che inserisco volta per volta)
- quantitï¿œ (idem)
- costo totale (che discende da questa espressione: Costo2008: 
IIf([Calcola]=-1;[Euro2008]*[Quantitï¿œ];0)
dove Euro2008 ï¿œ il listino 2008.
Ora, riesco a costruire una espressione in quel campo che, se la data ï¿œ 
compresa tra il 01.01.08 ed il 31.12.08, mi usi il campo [Euro2008], 
mentre se la e la data ï¿œ compresa tra il 01.01.09 ed il 31.12.09, mi usi 
il campo [Euro2009]?

bobparr ha scritto:

A margine:
Con [Calcola] = -1 indico una cella di controllo, che puo' o meno venire 
utilizzata.
Ancora: questa espressione che sto cercano, in realta', non mi dovrebbe 
servire sol per il 2008 ed il 2009, ma ad libitum negli anni a venire. 
Quindi la concatenazione degli IIF forse non ï¿œ la strada corretta.
Ma di fatto non lo so.

 usi il campo [Euro2009]?
Puoi continuare a nidiare l'IIf, tipo:
IIf([Calcola]=-1;IIf([Data] >= #01/01/2008# And <= 
#31/12/2008#;[Euro2008]*[Quantit�];[Euro2009]*[Quantit�];0))
Per� permettimi di dirti che non mi sembra una buona soluzione, perch� tra 
un p� ti trovi con un'IIf di dimensione e leggibilit� preoccupanti. Ti 
consiglierei di pensare a soluzioni diverse. Almeno che dopo l'aggiornamento 
della data ti valorizzi un campo con il listino attuale. Per soluzioni 
ulteriori ti conviene spiegare esattamente da dove prendi i campi e come li 
usi.
Ciao, Valerio

 
Si, i campi che ti ho citato rappresentano una sottomaschera del listino 
prodotti.
Ad ogni record [a cui corrisponde un prodotto] volevo associare le Non 
Conformitï¿œ (gli scarti).
La tabella del listino presenta naturalmente il campo Euro2008, Euro2009 
e a seguire...
Gli scarti noi li si fa nel 2008, nel 2009, li faremo nel 2010... ma 
dovranno essere tutti valorizzati in modo diverso [ovvero, utilizzando 
il costo dell'anno in corso].
Nella parte inferiore della maschera che visualizza i dati di ogni 
singolo prodotto [e sono tanti] ho inserito una sottomaschera che, alla 
bisogna, compilo inserendo:
- data della non conformitï¿œ
- pezzi scarto
- causa della non conformitï¿œ
- etc...
- costo (che viene valorizzato con l'espressione che ho indicato, ma che 
ï¿œ blindata su un singolo campo, ad ex Euro2008]
Il problema ï¿œ che sul pezzo "Alfa" ho 2 scarti nel 2007, 15 nel 2008 e 7 
nel 2009, ma per i quali l'espressione che ho indicato utilizza un solo 
campo [ovvero, un solo listino].
M.

 M.
Proviamoci in modo diverso:
hai una tabella prodotti, con una tabella listino con i campi per ogni anno, 
ed una tabella, e qui mi sono perso, con campi data, pezzi, causa, ecc... ma 
con un costo definito come?
Prova a spiegarmi quali tabelle usi e con quali relazioni.
il valore dello scarto, dove lo vai a leggere, vuoi ottenere una campo 
calcolato sulla somma di record contenenti data e pezzi in relazione al 
listino dell'anno della data?
Ciao, Valerio.

 
Hai mail in pvt
:-)
M.


Prima che qualcuno ti spari ti risponder� che NON si spediscono mail in pvt, 
perch� le discussioni restano sempre sul NG. E' vero che non si possono 
mandare allegati qui, ma ti assicuro che, seppur qualcosa in pi� ho capito, 
in realt� avresti dovuto prenderti il disturbo di spiegare le relazioni e le 
varie tabelle. Alcune mancano e soprattutto non � che per vedere i campi in 
un'immagine posso scorrere le barre ;-)
Se tu avessi postato tutta la SQL qui, molti e molto pi� esperti di me 
avrebbero potuto intervenire.
Comunque per venire a quanto ho capito.
Hai una tabella con IdProd, Anno, e Costo (peraltro ti consiglio, se ti 
servono tutti gli anni sulla maschera, di mettere una bella casella di 
riepilogo perch� tra un p� non saprai pi� dove scriverli) e nella tua 
sottomaschera crei un record per ogni non-conformit�, il cui costo viene 
calcolato su quello dell'anno della non-conformit�.
Io direi che ti calcoli il costo con una query con due relazioni idProd - 
idProdNC e Anno - su un campo tipo AnnoNC: Year(DataNC) per avere il costo 
univoco dell'anno, poi per il calcolo lasci la tua IIf precedente con 
riferimento al campo AnnoNC.
Spero di essermi spiegato e soprattutto di aver capito quello che stai 
facendo ora.
Ciao, Valerio.

 
Grazie mille, ci provo
M.