Newsgroup: it.comp.appl.access
Titolo: conta giorni lavorativi e Ferie...

Ciao, ho un piccolo problema
utilizzo una query che ha i seguenti campi
Data inizio | Data fine | Calcola giorni lavorativi
dove mi calcolo i giorni lavorativi. (utilizzo la funzione che ho
trovato sul sito comune)
e fin qui tutto bene. :o)
Al calcolo dei giorni lavorativi, dovrei togliere anche i giorni di
ferie aziendali.
io ho creato una tabella 'Ferie' con all'interno salvati i giorni di
ferie, ma non sň come far compiere alla query il controllo sulla
tabella 'Ferie' e togliere dalla funzione Conta giorni lavorativi
anche le date presenti sulla tabella 'Ferie'..
qualcuno č cosě gentile da aiutarmi? grazie.
alessia

 alessia
Ciao Alessia,
il demo che hai visto sul sito comune prevede anche l'utilizzo della
funzione festivo.
quindi secondo me per fare in modo che nel calcolo dei gg lavorativi vengano
inclusi anche il periodo/periodi di ferie, io agirei in questo modo :
sostituisci questa riga nella funzione Festivo
Dim Anno As Integer, DayMax As Date, DayMin As Date
con questa :
Dim Anno As Integer, DayMax As Date, DayMin As Date, dataInizioFerie As
Date, dataFineFerie As Date
dove dichiari come data altre due variabili data che utilizzi per l'inizio e
la fine delle ferie.
Aggiungere questo :
  dataInizioFerie = CDate("01/08/" & Anno)
   dataFineFerie = CDate("31/08/" & Anno)
   If D >= dataInizioFerie And D <= dataFineFerie Then
        Festivo = True
        Exit Function
   End If
dove farai restutire true alla funzione nel caso in cui la data cada nel
periodo di ferie.
Così facendo puoi gestire uno o più periodi di ferie che ne so dal
15/05/2005 al 31/05/2005 e poi anche dal 01/07/2005 al 20/07/2005.
ps.ricordati la prossima volta di indicare il n° della faq di riferimento
così è più facile per tutti dare un aiuto.
La funzione diventa cosi :
Public Function Festivo(D As Date) As Boolean
   'Restituisce: True se è un giorno festivo
   'Eventualmente inserire anche il Santo Patrono della città
   'Modificato da Roberto
   Dim Anno As Integer, DayMax As Date, DayMin As Date, dataInizioFerie As
Date, dataFineFerie As Date
   Anno = Year(D)
   If Weekday(D) = 1 Then
      Festivo = True
      Exit Function
   End If
   If Day(D) = 1 And (Month(D) = 1 Or Month(D) = 5 Or Month(D) = 11) Or _
         Day(D) = 6 And Month(D) = 1 Or Day(D) = 25 And (Month(D) = 4 Or _
         Month(D) = 12) Or Day(D) = 15 And Month(D) = 8 Or (Day(D) = 8 Or _
         Day(D) = 26) And Month(D) = 12 Then
      Festivo = True
      Exit Function
   End If
   'intervallo in cui può cadere il Lunedì di Pasqua
   dataInizioFerie = CDate("01/08/" & Anno)
   dataFineFerie = CDate("31/08/" & Anno)
   If D >= dataInizioFerie And D <= dataFineFerie Then
        Festivo = True
        Exit Function
   End If
   DayMax = DateValue("21/4/" & Anno)
   DayMin = DateValue("20/3/" & Anno)
   If Weekday(D) = 2 And D <= DayMax And D >= DayMin Then
      If D = (Pasqua(Anno) + 1) Then
         Festivo = True
         Exit Function
      End If
   End If
   Festivo = False
End Function
Ciao e spero che sia sufficiente per risolvere in caso contrario dacci
qualche ragguaglio

Ciao Sandro, 
Grazie per la risposta e la spiegazione davvero precisa. Ho inserito
le modifiche che mi hai suggerito e funziona tutto!
Non ho capito però una cosa, come faccio a gestire più periodi di
ferie?
se presempio nell'arco dell'anno ho le ferie prevesite dal 01/01 al
06/01 e dal 01/08 al 20/08 come posso modificare le due righe di
codice sotto ripoprtate per inserire tutti e due i periodi di ferie?
dataInizioFerie = CDate("01/08/" & Anno)
dataFineFerie = CDate("31/08/" & Anno)
inoltre se come quest'anno devo inserire alcuni "ponti" che saranno
validi solo per il 2005 o per un anno specifico,  come posso inserire
come ferie solo una determinata data?
esempio l'azienda ha deciso che quest'anno il 3 giugno faremo ponte...
03/06/05
grazie ancora Sandro, e buona giornata
alessia

 alessia
ricambio la buona giornata e ti saluto
Ciao, Sandro