Ich habe mich für das Script von unserem holländischen Freund entschieden - läuft ganz gut.
Sub Click(Source As Button)
Dim Session As New NotesSession
Dim Workspace As New NotesUIWorkspace
Dim TheDocument As NotesDocument
Dim db As notesDatabase
Dim UserName As String
Set UIDoc = Workspace.CurrentDocument
Set TheDocument = UIDoc.Document
Set db = New NotesDatabase("", "")
' Open user's mail database
db.openmail
' Notestime variabels
Dim StartDatum As String
Dim EindDatum As String
' Get variabels from document
StartDatum = Uidoc.FieldGetText("gA_vom_1")
EindDatum = Uidoc.FieldGetText("gA_bis_1")
' Converting startdate to us Datesetting (since my client is dutch but server resides us)
Dim StartDagMnd As String
Dim StartDag As String
Dim StartMnd As String
Dim StartJaar As String
StartDagMnd$ = Left$(StartDatum, 5)
StartDag$ = Left$(StartDagMnd,2)
StartMnd$ = Right$(StartDagMnd,2)
StartJaar$ = Right$(StartDatum,4)
'StartDatum = StartMnd + "." + StartDag + "." + StartJaar
' Converting enddate in US Datemsetting
Dim EindDagMnd As String
Dim EindDag As String
Dim EindMnd As String
Dim EindJaar As String
EindDagMnd$ = Left$(EindDatum, 5)
EindDag$ = Left$(EindDagMnd,2)
EindMnd$ = Right$(EindDagMnd,2)
EindJaar$ = Right$(EindDatum,4)
'EindDatum = EindMnd + "." + EindDag + "." + EindJaar
'Conversion for string to datefield
Set datum1 = New NotesDateTime (StartDatum)
Set datum2 = New NotesDateTime (EindDatum)
Call datum2.AdjustDay( 1 )
Startdatum = Cstr(datum1.DateOnly)
Einddatum = Cstr(datum2.DateOnly)
'The do while places the calendar item everyday unit startdate and endate are the same.
Do While StartDatum <> EindDatum
'Call calender
Dim CalendarEntry As New NotesDocument(db)
Dim rtitem As New NotesRichTextItem(CalendarEntry, "Body")
Call rtitem.AppendText("Voor details bekijk bijgesloten verlof verzoek")
Call rtitem.AddNewline(1)
Call rtitem.AppendDocLink(TheDocument, "Verlof")
UserName = Session.CommonUserName
CalendarEntry.Form = "Appointment"
CalendarEntry.Principal = UserName
CalendarEntry.Chair = Session.UserName
CalendarEntry.ExcludeFromView = "D"
CalendarEntry.OrgTable = "CO"
CalendarEntry.SequenceNum = 1
CalendarEntry.Subject = "Urlaub (Zina)"
'Appointment Type 4 = Reminder , 3 = meeting, 2 = event, 1 = anniversary, 0 = Personal
'Place string in calender fields
CalendarEntry.AppointmentType = "4"
CalendarEntry.StartDate = Cdat(StartDatum)
CalendarEntry.StartDateTime = Cdat(StartDatum)
CalendarEntry.CalendarDateTime = Cdat(StartDatum)
CalendarEntry.EndDateTime = Cdat(StartDatum)
Call CalendarEntry.save(True, True)
Call datum1.AdjustDay( 1 )
Startdatum = Cstr(datum1.DateOnly)
Einddatum = Cstr(datum2.DateOnly)
Loop
End Sub
Die Umwandlung in das holländische Datumsformat kann rausgenommen werden. Habe da noch ein kleines Problem. Ich würde das gern in meine ZeiterfassungsDB übernehmen. Hier geben User an, wann Sie Urlaub, Gleittage, Seminare,... haben. Anschließend geht das ganze an den Abteilungsleiter und dieser muß das OK geben - erst dann wandert das Ganze an die Perso.
Ich hätte gern, daß in dem Moment, wo der Leiter sein OK gibt die Einträge in den Kalender des Anträgers wandern.
Der Name des Anträgers ist natürlich im Dokument gespeichert. (gA_Vorname ; gA_Nachname) Wie schreibe ich das Script so um, daß der Eintrag in diesen Kalender gehen und nicht in den des Leiters ?
(Wie gesagt - bin Neuling !)
Danke schon mal.