Calcola i giorni lavorativi fra due date escludendo sabati, domeniche ed i giorni festivi presenti nel names.nsf (vista Holidays)
Dim s As New NotesSession Dim questodb As NotesDatabase Dim profilo As NotesDocument Dim ndc As NotesDocumentCollection Dim doc As NotesDocument Dim nab As NotesDatabase Dim vacanze As NotesView Dim lista() As String Dim descr() As string Dim conta As Integer Dim questanno As String Dim inizio As NotesDateTime Dim fine As NotesDateTime Dim intervallo As Integer Dim giorno As Integer intervallo = 20 Set questodb = s.CurrentDatabase questoserver = questodb.Server questanno = Right(CStr(Today),4) Set nab = s.Getdatabase(questoserver, "names.nsf") Set vacanze = nab.Getview("Holidays") Set ndc = vacanze.Getalldocumentsbykey("Italy", true) conta = 0 Set doc = ndc.Getfirstdocument() Do While Not doc Is Nothing If doc.RepeatUnit(0) = "Y" Then ReDim Preserve lista(conta) ReDim Preserve descr(conta) lista(conta) = Left(CStr(doc.StartDateTime(0)),6) + questanno descr(conta) = doc.Subject(0) conta = conta +1 End If If doc.RepeatUnit(0) = "C" Then ForAll d In doc.RepeatCustom If Right(CStr(d),4) = questanno Then ReDim Preserve lista(conta) ReDim Preserve descr(conta) lista(conta) = CStr(d) descr(conta) = doc.Subject(0) conta = conta + 1 End If End ForAll End If Set doc = ndc.Getnextdocument(doc) Loop Set inizio = New NotesDateTime( Today ) ' questa è la data di inizio, da settare a seconda delle esigenze Set fine = New NotesDateTime( Today ) giorno = 1 Do while Not giorno > intervallo Call fine.AdjustDay(1) wd = Weekday(fine.lslocaltime) If wd = 1 Or wd = 7 Then GoTo cicladata' se è sabato o domenica If Not IsNull( ArrayGetIndex( lista, fine.DateOnly , 5) ) Then GoTo cicladata ' se la data è compresa nei giorni festivi giorno = giorno + 1 cicladata: Loop
0 commenti