.. da hatte ich das Thema angesprochen, das Problem war sobald ich den wiederholenden Eintrag per Agent geändert hatte ist dieser aus der Kalenderansicht verschwunden.
... mein Script geht nicht ganz auf die Frage von Alex ein, da die wiederkehrenden Einträge ja nicht modofiziert werden
Das Script habe ich für V7 erstellt, unter V5 habe ich es nicht getestet, sollte aber keine Probleme machen
'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