Hallo,
habe anhand von folgendem Beitrag einen Agenten gebaut, der Einträge in dem Kalender des Users erstellt, der auf diesen Button klickt
Sub Click(Source As Button) Dim workspace As New NotesUIWorkspace Dim session As New NotesSession Dim db As NotesDatabase Dim doc As NotesDocument Dim uidoc As NotesUIDocument Dim dateRange As NotesDateRange Dim dauer As Integer Dim tmpdate As String Dim tmpdate2 As String Dim datum_von As String Dim datum_bis As String Dim startDate As NotesDateTime Dim endDate As NotesDateTime Set db = session.CurrentDatabase Set uidoc = workspace.CurrentDocument Set doc = New NotesDocument( db ) doc.Form = "newEvent" datum_von = uidoc.FieldGetText( "vonDatum" ) datum_bis = uidoc.FieldGetText( "bisDatum" ) dauer = uidoc.FieldGetText( "Dauer" ) Set startDate = New NotesDateTime (datum_von) Set endDate = New NotesDateTime(datum_bis) rc = Evaluate (|@MailDbName|) Set db = session.GetDatabase(rc(0), rc(1)) Set doc = db.CreateDocument doc.Form = "Appointment" doc.Chair = session.UserName doc.subject = uidoc.FieldGetText( "EventName") doc.AppointmentType="2" Set dateRange = session.CreateDateRange tmpDate = datum_von + " 04:00:00" Set ndt_datum_von = New NotesDateTime(tmpDate) Set ndt_datum_bis = New NotesDateTime(datum_bis + " 23:59:59") Dim ndt_CalendarDateTime As Variant Redim ndt_CalendarDateTime(0) ndt_CalendarDateTime(0) = ndt_datum_von.LSLocalTime Call ndt_datum_von.AdjustDay(1) i = 0 While ndt_datum_bis.TimeDifference(ndt_datum_von) > 0 Redim Preserve ndt_CalendarDateTime(Ubound(ndt_CalendarDateTime) + 1) ndt_CalendarDateTime(Ubound(ndt_CalendarDateTime)) = ndt_datum_von.LSLocalTime Call ndt_datum_von.AdjustDay(1) Wend doc.CalendarDateTime = ndt_CalendarDateTime doc.CalendarDateTime = ndt_CalendarDateTime Set dateRange.StartDateTime = startDate Set dateRange.EndDateTime = endDate Set doc.TimeRange = dateRange doc.Duration = dauer doc.SequenceNum = 1 doc.OrgTable = "P0" Messagebox "Danke für die Anmeldung." ,, "Info" Set doc.StartDateTime = New NotesDateTime (tmpDate) Set doc.StartDate = New NotesDateTime (tmpDate) Set doc.EndDateTime = New NotesDateTime (tmpDate2) Call doc.ComputeWithForm(False,False) Call doc.Save(True,False,True) 'Mail versenden Set db2 = session.CurrentDatabase Set doc2 = New NotesDocument( db ) Username=session.UserName doc2.Form = "Memo" doc2.SendTo = Username doc2.Subject = "Bestätigung der Anmeldung für: " + uidoc.FieldGetText( "EventName") Call doc2.Send( False ) Call uidoc.CloseEnd Sub
Jetzt soll es aber noch eine Möglichkeit geben, dass sich diese Person auch wieder abmelden kann. Hierzu stand auch etwas in dem o. g. Beitrag, jedoch klappt das nicht wie es sollte. Es passiert einfach nichts.
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim docCal As NotesDocument
Dim id As String
Set db = session.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Set item = doc.GetFirstitem("UNID_in_Cal")
If Not(item Is Nothing) Then
unid = item.values(0)
reg.RegistrationServer = "....."
Call reg.GetUserInfo(session.UserName, mailserver, mailfile)
Set dbmail = session.Getdatabase(mailserver, mailfile,False)
Set doc = dbmail.GetDocumentByUNID( unid )
Call doc.Remove(True)
End If
Messagebox "Sie wurden wieder abgemeldet." ,, "Info"
End Sub
Alles anzeigen
Desweitern habe ich festgestellt, dass wenn ich mich angemeldet habe und den Eintrag in meinem Kalender öffnen möchte, ich immer die Fehlermeldung bekomme "Feld: 'EndeDate_2': Array-Index außerhalb des gültigen Bereichs". Dieses Feld existiert aber nicht. In anderen Dokumenten existiert es auch nicht.
Gibt es eine Möglichkeit, durch einen Doppelklick auch in der Event-DB zu landen und sich den Event nochmals anzuschauen?
Wie sieht es aus mit dem Löschen des Termins, falls man sich wieder abmeldet?
Hoffentlich kann mir jemand helfen, bin mit LS noch nicht so vertraut.
mfg
Michael