Newsgroup: it.comp.appl.access
Titolo: Operazioni su giorni lavorativi

Ciao a tutti.
Innanzitutto grazie a questo forum ho creato cose impensabili, almeno
per me.
Volevo esporvi un mio problema molto semplice al quale, però, non
riesco a trovare soluzione.
Vorrei confrontare un dato giornaliero (che sarà presente solo per i
giorni lavorativi, quindi esclusi sabato e domenica o altre festività)
con lo stesso dato dello stesso giorno però dell'anno precedente. In
poche parole:
DATA            VALORE               DATA ANNO PREC.
VALORE               DIFFERENZA
4/7/2007            20
4/7/2006                19                           +1
Il problema nasce quando la data dell'anno precedente cade di sabato o
di domenica (o altra festività). In questo caso il valore che mi
servirebbe sarebbe quello immediatamente precedente a quello in
questione. Quindi, riprendendo l'esempio di prima, se il 4/7/2006
fosse caduto di sabato, il valore da restituire sarebbe stato quello
del giorno prima, venerdì 3/7/2006, se, invece, fosse caduto di
domenica, il valore sarebbe stato di venerdì 2/7/2006.
Aspetto consigli e soluzioni.
Grazie a tutti anticipatamente

Purtroppo la formattazione mi ha sballato l'esempio. Provo a rifarlo
DATA                                        4/7/07
VALORE CORRISPONDENTE         20
DATA ANNO PREC.                   4/7/06
VALORE CORRISPONDENTE         19
DIFFERENZA                                  +1
Ciao a tutti

 questione.
Usa dmax per trovare la data che piu' si avvicina a quella che ti
interessa, senza pero' superarla:
UnAnnoFa= dmax("CampoData","Tabella","CampoData<=#" &
format(DataAdesso, "mm/dd/yyyy") & "#")
cia'
Max


Grazie per il suggerimento, ma sinceramente non riesco a capire ed
applicare la tua formula.
Potresti essere più chiaro??
Grazie

 applicare la tua formula.
Hai una tabella/query con un record per ogni giorno lavorativo
dell'anno.
Diciamo che la tabella si chiama TABELLA e il campo che contiene la
data e' CAMPODATA.
DataAdesso e' la data di riferimento, che puo' essere oggi (e la
recuperi con date() ) o una data a piacere.
Quella funzione (che, peraltro, avevo sbagliato: mancava il -365)
serve per individuare nella TABELLA la data piu' vicina (ma non
superiore) a un anno prima della data di riferimento, e la usi come
piu' ti fa comodo, ad esempio in una query:
Select TABELLA.* from TABELLA where
CAMPODATA=dmax("CampoData","Tabella","CampoData<=#" &
format(DataAdesso - 365, "mm/dd/yyyy") & "#")
cia'
Max


Grazie per le delucidazioni. Purtroppo, però, adattandola alle mie
esigenze succede una cosa strana: Access va in errore e si chiude da
solo!!!!
Comunque stavo provando ad inserire la tua formula in un nuovo campo
nella query utilizzando DLOOKUP in questo modo:
Valore anno precedente: DLookUp("[Platt's BSP]";"Dati giornalieri
Query";"[DATAAct]= " & DMax("[Platt's BSP]";"Dati giornalieri
Query";"[DATAAct]<= Cdate('" & [DATAAct] & "')-365"))
In altri termini nella query "Dati giornalieri query" sono riepilogati
giorno per giorno i vari valori "Platt's BSP"; in corrispondenza di
ogni valore vorrei che mi venisse visualizzato il valore
corrispondente ad un anno prima tenendo conto che per i sabato e le
domeniche (o altre festività) non esistono valori. Quindi se oggi, per
esempio; è lunedì 10/7/07 e la data corrispondente ad un anno fa è
domenica 10/7/06 (quindi non ho valore), il valore da restituire sarà
il primo disponibile, ovvero 8/7/06.
Purtroppo, però, la formula sopra riportata non mi restituisce alcun
valore.
Aspetto impaziente vostri consigli.
Ciao