Newsgroup: it.comp.appl.access
Titolo: date: come eslcudere giorni festivi?

ho fatto tutto in db che mi calcola le scadenze delle varie fasi di 
lavorazione di un prodotto.
es:
dalla fase1 alla fase 2 passano 4 giorni, dalla fase 2 alla 3 ne passano 
altri 4.
Nome  fase1      fase2        fase3
Mod1  01/01/06  05/01/06  09/01/06
Mod2  09/01/06  13/01/06  17/01/06
il problema è che mi sono accorto ora che il calcolo viene effettuato 
contando anche domeniche e festivi (e ciò non è bello ;)
mi sono creato prontamente un tabella calendario in cui i giorni festivi 
sono contrassegnati con uno 0. Il dubbio è come potrei utilizzarlo per 
aggiungere il numero di giorni festivi al conteggio delle fasi di 
produzione?
-- 
Sláinte, Eirinn
icq# 3346238 - 
http://eirinn.altervista.org/
"Per aspera ad astra"

per escludere le domeniche dal conteggio devi creare una query
contenente tutti i campi più i seguenti campi calcolati:
f1-f2:
DateDiff("d";[fase1];[fase2];2;1)-DateDiff("w";[fase1];[fase2];1;1)
f2-f3:
DateDiff("d";[fase2];[fase3];2;1)-DateDiff("w";[fase2];[fase3];1;1)
per escludere i sabati e le domeniche dal conteggio devi creare una
query contenente tutti i campi più i seguenti campi calcolati:
f1-f2:
DateDiff("d";[fase1];[fase2];2;1)-DateDiff("w";[fase1];[fase2];1;1)-DateDif­f("w";[fase1];[fase2];7;1)
f2-f3:
DateDiff("d";[fase2];[fase3];2;1)-DateDiff("w";[fase2];[fase3];1;1)-DateDif­f("w";[fase2];[fase3];7;1)

 contenente tutti i campi più i seguenti campi calcolati:
 > ...
Grazie per la risposta!
Con il tuo metodo però non eliminerei gli altri giorni festivi 
infrasettimanali.
ho una query che mi estrae tutti i giorni festivi dell'anno, non potrei 
usarla per qualcosa tipo:
se l'intervallo tra la fase1 e la fase2 contiene una delle date della 
query allora aggiungi un giorno all'inizio della fase2?


 query allora aggiungi un giorno all'inizio della fase2?
anzi, più corretto, dato che la data della fase 2 è l'incognita:
se l'intervallo tra la fase1 + 4 giorni contiene una delle seguenti 
date, allora aggiungi un giorno all'inizio della fase 2


La soluzione è molto complessa, e con tabelle contenenti migliaia di
dati potrebbe impiegarci molto tempo, di seguito ti riporto il codice
da me creato e via e-mail ti mando l'mdb.
Function calcola()
Dim miorst  As Recordset
Dim tuorst As Recordset
Dim contafestivi12, contafestivi23, i, l, mese, anno As Integer
Set miorst = CurrentDb.OpenRecordset("Q_fasi")
Set tuorst = CurrentDb.OpenRecordset("Q_festivi")
contafestivi12 = 0
contafestivi23 = 0
i = 0
miorst.MoveLast
miorst.MoveFirst
Do Until miorst.EOF
For i = 1 To DateDiff("d", miorst![fase1], miorst![fase2], vbMonday,
vbFirstJan1)
tuorst.MoveLast
tuorst.MoveFirst
    Do Until tuorst.EOF
        If tuorst![giorno] = DateSerial(Year(miorst![fase1]),
Month(miorst![fase1]), Day(miorst![fase1]) + i) Then
        contafestivi12 = contafestivi12 + 1
        End If
        tuorst.MoveNext
    Loop
Next i
miorst.Edit
miorst![festivi12] = contafestivi12
miorst![lavorativi12] = DateDiff("d", miorst![fase1], miorst![fase2],
vbMonday, vbFirstJan1) - contafestivi12
miorst.Update
miorst.MoveNext
i = 0
contafestivi12 = 0
Loop
contafestivi12 = 0
contafestivi23 = 0
i = 0
miorst.MoveLast
miorst.MoveFirst
Do Until miorst.EOF
For i = 1 To DateDiff("d", miorst![fase2], miorst![fase3], vbMonday,
vbFirstJan1)
mese = DateDiff("m", miorst![fase2], miorst![fase3], vbMonday,
vbFirstJan1)
anno = DateDiff("yyyy", miorst![fase2], miorst![fase3], vbMonday,
vbFirstJan1)
tuorst.MoveLast
tuorst.MoveFirst
    Do Until tuorst.EOF
        If tuorst![giorno] = DateSerial(Year(miorst![fase2]),
Month(miorst![fase2]), Day(miorst![fase2]) + i) Then
        contafestivi23 = contafestivi23 + 1
        End If
        tuorst.MoveNext
    Loop
Next i
miorst.Edit
miorst![festivi23] = contafestivi23
miorst![lavorativi23] = DateDiff("d", miorst![fase2], miorst![fase3],
vbMonday, vbFirstJan1) - contafestivi23
miorst.Update
miorst.MoveNext
i = 0
contafestivi23 = 0
Loop
End Function
Ho fatto solo due prove, se il modulo ti da problemi contattami via
mail.
Spero tu riesca a modellare il codice in base alle tue esigenze.
Ciao
Andrea

 Spero tu riesca a modellare il codice in base alle tue esigenze.
wow! 8)
me lo studio per bene, attenzione all'indirizzo e-mail, visot che nel 
newsreader ho inserito una stringa per deviare lo spam.
e io che speravo di cavarmela con qualche between...


 produzione?
Vai sul Sito Comune (link qui sotto) e nella Sezione General leggi queste
due FAQ:
1) 6.28 Conteggio dei giorni lavorativi tra due date di G. Paolo Bizzaro,
Roberto e Silvio Mazzetto
2) 6.138 Sommare giorni lavorativi ad una data di Enrico Virginio
Con quel sistema non è necessario approntare tabelle che contengano l'elenco
dei giorni festivi.
L'unica modifica che devi fare è quella per considerare festivo anche il
giorno del santo patrono, che non viene considerarto in quanto diverso per
ogni realtà locale.
-- 
Roberto
-----------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
-----------------------------------------------