hatte folgenden Weg (meine spez. Anwendung, ist also anzupassen !!!):
A: wieviel Urlaubstageein Feld, das die Anzahl der Tage berechnet:
@If(Feld_ABC!="ja";0;@Round((EndDate-StartDate)/86400;1))
(ergibt 1, 2, 3 oder 4 oder ....)
Damit weiß ich, wie oft die Schleife zum Anlegen der Termindocs laufen muß.
B: öffnen der Mail DB des Users und Kalendeintrag erzeugenDim Lokation As String
Dim userMailDb As New NotesDatabase( "", "" )
Dim reminderDoc As NotesDocument
Call userMailDb.OpenMail
If userMailDb.IsOpen Then
...
Set reminderDoc = New NotesDocument( userMailDb )
Dim rtItem As NotesRichTextItem
With reminderDoc
.Form = "Appointment"
.ReplaceItemValue "$Alarm", 1
.ReplaceItemValue "$AlarmDescription", "Erinnerung"
.ReplaceItemValue "$AlarmMemoOptions", ""
.ReplaceItemValue "$AlarmOffset", 0
.ReplaceItemValue "$AlarmUnit", "M"
.ReplaceItemValue "NoticeType", "R"
.ReplaceItemValue "tmpDoNotProcess", "1"
.Subject = doc.subject(0) & { (ABCDEFG)}
.Alarms = "1"
.CalendarDateTime = dtimefromNEU.lsLocalTime
.StartDate = dtimefromNEU.lsLocaltime
.StartTime = dtimefromNEU.lsLocaltime
.StartDateTime = dtimefromNEU.lsLocaltime
.EndDate = dtimetoNEU.lsLocaltime
.EndTime = dtimetoNEU.lsLocaltime
.EndDateTime = dtimetoNEU.lsLocaltime
.MeetingType = "0"
.AppointmentType = "0"
.ISMAILSTATIONERY = 1
End With
reminderDoc.ComputeWithForm True,True
reminderDoc.save True,False
reminderDoc.PutInFolder( "$Alarms" )
Else
Print "Fehler: Kann die Maildatei nicht öffnen"
End If
C: Und wie erzeuge ich die Serie?oben in B siehst Du wie die Zeiten + Datum eingetragen werden (all diese Variablen mit "time" drin). Die kannst Du dynamisch erstellen. Wie? >
Beispiel, um letztes Datum incl. Zeit der "Beleihung bzw Urlaub" per adjust zu berechnen
Set EndDateFirstT = New NotesDateTime(StartDateFirstT.dateonly & " " & StartZeitLastT.TimeOnly) ' Tag momentan 01.01.03 00:01 Uhr
Set EndDateLastT = New NotesDateTime(StartDateFirstT.dateonly & " " & EndZeitLastT.Timeonly) ' Tag momentan 01.01.03 bis Ende Uhrzeit 08:00 Uhr
Call EndDateFirstT.AdjustDay( daycounter ) ' auf letzten Tag hochzaehlen zB 10.01.03 00:01 Uhr
Call EndDateLastT.AdjustDay( daycounter ) ' auf letzten Tag hochzaehlen zB 10.01.03 08:00 Uhr
daycounter ist also der Zähler und gleichzeitig Deine Anzahl Urlaubstage im Maximum.
Zähler fängt also bei 0 an = 1. Urlaubstag
...
Zähler 6 = 7. Urlaubstag
etc...
Mit diesem Zähler gehst Du in eine For Schleife und kreierst wie bei B gezeigt die einzelnen Serientermine.
Klar? Nicht? Ist nicht trivial zu Beginn, aber nach einer Stunde ist es ok, glaub mir
Beware: ich arbeite im obigen Beispiel mit "Urlaubstagen" wie
zB vom 01.01. 16:00 bis 10.01. 07:00 Uhr. Sieht man oben nicht, woher ich die Uhrzeiten hernehme, das ist "wo anders" im Code. Deine Urlaubstage werden wohl 24 Std. Termine sein, also pass es Dir ganz einfach an.