| |
| 'This Agent adjust the Lotus Notes Calendar to the correct German Timezone |
| ' 09.03.2007 Matthias Schlimm |
| |
| |
| Sub Initialize |
| Dim s As New notessession |
| Dim Sadjusted As notesdatetime |
| Dim Eadjusted As notesdatetime |
| Dim startDST As Variant |
| Dim endDST As Variant |
| Dim tzInDST As Variant |
| Dim tzOutDST As Variant |
| Dim dc As NotesDocumentCollection |
| Dim FileName As String |
| Dim FileNbr As Integer |
| Dim CheckAgent As String |
| |
| Dim Db As String |
| Dim DbName As String |
| Dim maildoc As NotesDocument |
| Dim dbs As NotesDatabase |
| Dim rtbody As NotesRichTextItem |
| Dim isDST As New NotesDateTime ("25.03.2007 02:00:00") |
| |
| If Not (isDST.isDST) Then |
| Messagebox ("Bitte kontrollieren Sie unter Start -> Einstellungen -> |
| Systemsteuerung -> Datum/Uhrzeit, ob bei 'Zeitzone' -> 'Uhr auf Sommer-/Winterzeit umstellen' aktiv ist. |
| Sollte dies nicht der Fall sein, korrigieren Sie dies bitte bzw. wenn Sie dafür nicht die benötigte |
| Berechtigung haben, kontaktieren Sie bitte Ihren Systembetreuer. Anschließend starten Sie |
| Ihren Notes-Client neu !") |
| Exit Sub |
| End If |
| |
| Set dbs = s.CurrentDatabase |
| Set maildoc = New NotesDocument (dbs) |
| |
| |
| cntInDST=0 |
| cntOutDST=0 |
| cntTZTrue=0 |
| cntTZFalse=0 |
| CheckAgent="no" |
| notespath=s.GetEnvironmentString("Directory",True) |
| CheckAgent=s.GetEnvironmentString("$CheckAgentIfRunning2k7",True) |
| If CheckAgent="yes" Then Exit Sub |
| Call s.SetEnvironmentVar("CheckAgentIfRunning2k7","no") |
| |
| startDST = Datevalue("25.03.2007") |
| endDST = Datevalue("28.10.2007") |
| tzInDST = "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=81$ZN=W. Europe" |
| tzOutDST = "Z=-1$DO=0$ZX=81$ZN=W. Europe" |
| |
| |
| On Error Goto ErrHandle |
| |
| Print "Zeitzonenumstellung wird vorbereitet..." |
| |
| Set dc=s.currentdatabase.AllDocuments |
| db=dc.Parent.FilePath |
| dbname=dc.Parent.FileName |
| 'Datenbanken ausschließen |
| If dbname="test.nsf" Then Exit Sub ' Dieses Datenbank von der Umstellung ausschließen |
| Msgbox "Hinweis:Die Kalendereinträge werden nun für die Sommerzeit vom "& startDST & " bis zum " & endDST & " korrigiert !" |
| Print "Bitte warten...." |
| FileName =notespath+"\AgentAdjustCalender_ "+dbname+".log" |
| FileNbr= Freefile() |
| Open FileName For Output As FileNbr |
| Print #Filenbr,"LogDatei des Agent zur Zeitzonenkorrektur des Kalenders" |
| Print #FileNbr, "Datenbank: "+db |
| |
| maildoc.form="Memo" |
| maildoc.subject = "Bericht Zeitzonenumstellung für "+db |
| Set RtBody = New NotesRichTextItem( maildoc, "Body" ) |
| Call rtbody.AppendText ("Wiederkehrende Kalendereinträge werden nicht korrigiert, |
| diese müssen manuell umgestellt werden") |
| Call rtbody.AddNewline(2) |
| Call rtbody.AppendText("Folgende Kalendereinträge wurden korrigiert:") |
| Call rtbody.AddNewline(2) |
| maildoc.sendTo = s.UserName |
| 'Zentrale Mail-DB für Logfiles hier eintragen |
| maildoc.BlindCopyTo = "MailInDB@cfirma.de" |
| |
| |
| For i = 1 To dc.Count |
| On Error Goto ErrHandle |
| CalenderEntry=0 |
| Set doc =dc.GetNthDocument(i) |
| Set Form=doc.getfirstItem("Form") |
| If doc.hasitem("Form")=False Then Goto NextDocument |
| Print "Prüfe Dokument Nr. "&Str$( i)& " von "&Str$(dc.Count)& " / Typ: "&Form.values(0) |
| If Form.values(0)="Appointment" Then |
| Set startdatetime=doc.getfirstitem("StartDateTime") |
| If doc.hasitem("StartDateTime")=False Then Goto NextDocument |
| Set startdate=doc.getfirstitem("StartDate") |
| If doc.hasitem("StartDate")=False Then Goto NextDocument |
| Set starttime=doc.getfirstitem("StartTime") |
| If doc.hasitem("StartTime")=False Then Goto NextDocument |
| Set calendardatetime=doc.getfirstitem("CalendarDateTime") |
| If doc.hasitem("CalendarDateTime")=False Then Goto NextDocument |
| Set starttimezone=doc.getfirstitem("StartTimeZone") |
| If doc.hasitem("StartTimeZone")=False Then Goto NextDocument |
| Set Subject=doc.getfirstitem("Subject") |
| Set enddatetime=doc.getfirstitem("EndDateTime") |
| If doc.hasitem("EndDateTime")=False Then Goto NextDocument |
| Set enddate=doc.getfirstitem("EndDate") |
| If doc.hasitem("EndDate")=False Then Goto NextDocument |
| Set endtime=doc.getfirstitem("EndTime") |
| If doc.hasitem("EndTime")=False Then Goto NextDocument |
| Set endtimezone=doc.getfirstitem("EndTimeZone") |
| If doc.hasitem("EndTimeZone")=False Then Goto NextDocument |
| Set Repeats=doc.getfirstitem("Repeats") |
| Set AppointmentType=doc.getfirstitem("AppointmentType") |
| Set Sadjusted= startdatetime.datetimevalue |
| Set Eadjusted=enddatetime.datetimevalue |
| End If |
| 'Prüfen ob der Eintrag kein Jahrestag / AppointmentType=1 oder eine |
| 'ganztätige Veranstaltung / AppointmentType=2 ist. |
| If Form.values(0)="Appointment" Then |
| If AppointmentType.values(0)="1" Or AppointmentType.values(0)="2" Then |
| CalenderEntry=0 |
| Else |
| CalenderEntry=1 |
| End If |
| Else |
| 'Prüfen ob der Eintrag eine Aufgabe ist |
| If Form.values(0)="Task" Then CalenderEntry=0 |
| End If |
| If CalenderEntry=1 Then |
| If startdatetime.text="ERROR:" Then Goto NextDocument |
| Print "Dokument "&Subject.values(0)& " am " &startdatetime.values(0)&" wird geprüft.. !" |
| Print #FileNbr,"Dokument "&Subject.values(0)& " am " &startdatetime.values(0)&" wird geprüft.. !" |
| On Error Goto ErrHandle |
| 'Prüfen ob das Kalenderdatum innerhalb der Sommerzeit liegt |
| If startdate.values(0) >= startDST And startdate.values(0) <= endDST Then |
| If doc.hasitem("Repeats") Then |
| If Repeats.values(0)="1" Then |
| Print "Dokument "&Subject.values(0)& " am " &startdatetime.values(0)&" ist ein |
| wiederkehrender Eintrag und wird nicht korrigiert. |
| Bitte prüfen Sie den Eintrag manuell" |
| Print #FileNbr,"Dokument "&Subject.values(0)& " am " &startdatetime.values(0)&" ist ein |
| wiederkehrender Eintrag und wird nicht korrigiert. |
| Bitte prüfen Sie den Eintrag manuell" |
| Call rtbody.AppendText ("Dokument "&Subject.values(0)& " am " &startdatetime.values(0)&" ist ein |
| wiederkehrender Eintrag und wird nicht korrigiert. |
| Bitte prüfen Sie den Eintrag manuell") |
| Call rtbody.AddNewline(1) |
| Goto NextDocument |
| End If |
| End If |
| cntInDST=cntINDST+1 |
| If starttimezone.values(0) <> tzInDST Then |
| Call Sadjusted.adjusthour(-1) |
| Call sadjusted.ConvertToZone(sadjusted.TimeZone, True) |
| Call Eadjusted.AdjustHour(-1) |
| Call Eadjusted.converttozone(eadjusted.timezone, True) |
| doc.starttimezone = tzINDST |
| doc.endtimezone = tzInDST |
| cntTZFalse=cntTZFalse+1 |
| Print "Dokument "&Subject.values(0)& " am " &startdatetime.values(0)&" ->>>> |
| fehlerhafte Zeitzone wird korrigiert.. !" |
| Print #FileNbr,"Dokument "&Subject.values(0)& " am " &startdatetime.values(0)&" ->>>> |
| fehlerhafte Zeitzone korrigiert.. !" |
| Call rtbody.AppendText ("Dokument "&Subject.values(0)& " am " &startdatetime.values(0)&" ->>>> |
| fehlerhafte Zeitzone wurde korrigiert.. !") |
| Call rtbody.AddNewline(1) |
| Else |
| Call Sadjusted.adjusthour(0) |
| Call Eadjusted.AdjustHour(0) |
| cntTZTrue=cntTZTrue+1 |
| Print "Dokument "&Subject.values(0)& " am " &startdatetime.values(0)&" ->>> |
| Zeitzone ist o.k, keine Korrektur notwendig" |
| Print #FileNbr,"Dokument "&Subject.values(0)& " am " &startdatetime.values(0)&" ->>> |
| Zeitzone ist o.k, keine Korrektur notwendig" |
| End If |
| Set startdatetime.datetimevalue=Sadjusted |
| Set startdate.datetimevalue=Sadjusted |
| Set starttime.datetimevalue=Sadjusted |
| Set calendardatetime.datetimevalue=Sadjusted |
| Set enddatetime.datetimevalue=Eadjusted |
| Set enddate.datetimevalue=Eadjusted |
| Set endtime.datetimevalue=eadjusted |
| Call doc.save(True,True) |
| End If |
| End If |
| Goto NextDocument |
| ErrHandle: |
| On Error Resume Next |
| Print #FileNbr,"Ein Dokument war fehlerhaft und konnte nicht geprüft werden !" |
| On Error Goto ErrHandle |
| |
| NextDocument: |
| Next |
| Close FileNbr |
| Call s.SetEnvironmentVar("CheckAgentIfRunning2k7","yes") |
| Call s.SetEnvironmentVar("DST","1",True) |
| Call s.SetEnvironmentVar("Timezone","-1",True) |
| Call s.SetEnvironmentVar("DSTLAW","3,-1,1,10,-1,1",True) |
| maildoc.Send (False) |
| Call DisplayMessages(cntINDST,cntOutDST,cntTZTrue,cntTZFalse) |
| |
| End Sub |
| |
| |
| Sub DisplayMessages (cntInDST,cntOutDST,cntTZTrue,cntTZFalse) |
| If cntInDST<>0 And cntTZFalse<>0 Then |
| Messagebox "Es wurde(n) "& cntInDST &" Dokumente in der |
| Sommerzeit gefunden, "& cntTZFalse & " Dokument(e) davon wurde(n) auf die |
| richtige Zeitzone eingestellt !" |
| End If |
| If cntOutDST<>0 And CntTZFalse<>0 Then |
| Messagebox "es wurden(n) " & cntOutDST &" Dokumente ausserhalb der |
| Sommerzeit gefunden, "& cntTZFalse & " Dokument(e) davon wurde(n) auf die |
| richtige Zeitzone eingestellt !" |
| End If |
| End Sub |
| |
| |