Newsgroup: it.comp.appl.access
Titolo: calcolo dei giorni lavorativi tra due date

Ciao a tutti
Ho scaricato il seguente codice che dovrebbe calcolare quanti giorni
lavolativi intercorrono tra due date. Dico dovrebbe per chè non sono
riuscito a capirci niente. Ora, da come posso pensare funzioni il tutto,
dovremmo trovare in una maschera il campo DATA INIZIO, il campo DATA FINE ed
il campo GIORNI LAVORATIVI, ma io come faccio a legarli insieme????? Nel
codice ci dovrebbe essere un riferimento ai campi DATA che però non ho
capito quali siano, e per lo stesso motivo un riferimento per il risultato
che anche qui non ho capito. Visto che purtroppo mi trovo in un vicolo
cieco, chiederei l'aiuto di qualche persona che ha già utilizzato questo
tipo di funzione, o chiunque altro lo sappia fare.
Ringrazio tutti coloro che vorranno aiutarmi e prego il NG se spesso romperò
per le mie richieste di aiuto.
Ciao
        Celestino
'*********** Code Start **************
Function Work_Days (BegDate As Variant, EndDate As Variant) As Integer
' Note that this function does not account for holidays.
Dim WholeWeeks As Variant
Dim DateCnt As Variant
Dim EndDays As Integer
 BegDate = DateValue(BegDate)
 EndDate = DateValue(EndDate)
       WholeWeeks = DateDiff("w", BegDate, EndDate)
       DateCnt = DateAdd("ww", WholeWeeks, BegDate)
       EndDays = 0
       Do While DateCnt < EndDate
         If Format(DateCnt, "ddd") <> "Sun" And _
                          Format(DateCnt, "ddd") <> "Sat" Then
              EndDays = EndDays + 1
          End If
          DateCnt = DateAdd("d", 1, DateCnt)
       Loop
       Work_Days = WholeWeeks * 5 + EndDays
End Function
'*********** Code End **************

In una form crea i seguenti 3 controlli:
1. DataInizio 
(con formato = gg/mm/aaaa, e maschera di input = 99/99/0000;0;_)
Nell'evento DopoAggiornamento inserisci:
If Not IsNull(Me!DataInizio) And Not IsNull(Me!DataFine) Then
    Me!GiorniLavorativi = Work_Days(Me!DataInizio, Me!DataFine)
End If
2. DataFine
(con formato = gg/mm/aaaa, e maschera di input = 99/99/0000;0;_)
Nell'evento DopoAggiornamento inserisci:
If Not IsNull(Me!DataInizio) And Not IsNull(Me!DataFine) Then
    Me!GiorniLavorativi = Work_Days(Me!DataInizio, Me!DataFine)
End If
3. GiorniLavorativi
Crea un nuovo modulo in cui inserirai :
(Attenzione: aggiungi la parola Public all'inizio
in modo che la funzione sia richiamabile 
da tutte le maschere)
Public Function Work_Days(BegDate As Variant, EndDate As Variant) As
Integer
' Note that this function does not account for holidays.
Dim WholeWeeks As Variant
Dim DateCnt As Variant
Dim EndDays As Integer
 BegDate = DateValue(BegDate)
 EndDate = DateValue(EndDate)
       WholeWeeks = DateDiff("w", BegDate, EndDate)
       DateCnt = DateAdd("ww", WholeWeeks, BegDate)
       EndDays = 0
       Do While DateCnt < EndDate
         If Format(DateCnt, "ddd") <> "Sun" And _
                          Format(DateCnt, "ddd") <> "Sat" Then
              EndDays = EndDays + 1
          End If
          DateCnt = DateAdd("d", 1, DateCnt)
       Loop
       Work_Days = WholeWeeks * 5 + EndDays
End Function
Ciao.

 lavolativi intercorrono tra due date. Dico dovrebbe per chč non sono
Sul sito comune trovi una funzione piů completa:
T&T, "Conteggio dei giorni lavorativi tra due date.", Silvio Mazzetto e
G.Paolo Bizzaro
Quella che hai postato tu considera non lavorativi sabato e domenica,
nient'altro.
Quella sul sito comune tiene conto anche dei giorni festivi come S.Stefano,
Primo maggio ecc. ed anche del Lunedě di Pasqua, variabile da anno in anno.
Per l'utilizzo consulta sull'help cosa significano Sub e Function.
Il sito comune: 
http://members.xoom.it/it_db_access
--
Ciao, AntoGal
*************************************************
Home Page (area programmatori di VolFtp)
http://volftp.mondadori.com/italiani/galletta/
per scaricare un gioco di DAMA ITALIANA
*************************************************