Dokumente aus Anwendung in pers. Kalender kopieren

  • Hallo zusammen,


    wir möchten in einer Anwendung (DB) Veranstaltungen erfassen und den Mitarbeitern Infos hierzu zur Verfügung stellen.


    Beim Aufruf der Dokumente sollen die Benutzer die Möglichkeit haben, für das Dokument einen Kalendereintrag zu erzeugen (Kopieren des Dokuments in Mail-Anwendung).


    Bei IBM gibt es eine Beispiel-DB (Worldwide Sales Events), in der eine solche Funktion angeboten wird. Allerdings wird das Dokument zwar in der Mail-Anwendung erzeugt, ist aber nicht im Kalender sichtbar, sondern nur in der Ansicht "Alle Dokumente". Bei Versuch das Dokument zu öffnen gibt es folgende Fehler:
    "Fehler beim Öffnen des Dokuments: Element nicht gefunden"
    "Feld 'tmpStartDate1': Falscher Datentyp für Operator oder @Funktion: Zeit/Datum erwartet"


    Woran liegt das?
    Gibt es evtl. andere Lösungen um von einer Kalenderanwendung in die eigene Kalenderanwendung zu kopieren?


    Domino-Server 8.0.2
    Notes-Client 8.0.2
    Mail-Schablone R8 (SCT)


    hier das Script:


    Sub Click(Source As Button)
    Dim db As Notesdatabase
    Dim session As New NotesSession
    Dim workspace As New notesuiworkspace
    Dim uidoc As notesuidocument
    Dim note As notesdocument
    Dim item As NotesItem
    Dim startdttm As NotesDateTime
    Dim enddttm As NotesDateTime
    Dim window As NotesDateRange
    Dim names As String
    Dim dur As Integer
    Dim username As String

    Set uidoc = workspace.currentdocument
    Set note = uidoc.Document
    Set item = note.GetFirstItem("EventStartDate")
    Set startdttm = item.DateTimeValue
    Set item = note.GetFirstItem("EventEndDate")
    Set enddttm = item.DateTimeValue
    Set window = session.CreateDateRange()
    Set window.StartDateTime = startdttm
    Set window.EndDateTime = enddttm
    names = session.CommonUserName
    dur = ((enddttm.TimeDifference(startdttm))+86400)/60
    freeTime = session.FreeTimeSearch(window, dur, names, True)

    ' If there is no value for freeTime(0) then that time is already booked - messagebox constants 0=okonly, 4=yesno, 32=question mark icon, 7=no
    ' If (freeTime(0) Is Nothing) Then
    ' If Messagebox ("This time is already booked - do you want to double book?", 4 + 32) = 7 Then
    ' Messagebox "This document has NOT been added to your calendar. ", 0, "Add Canceled"
    ' Exit Sub
    ' End If
    ' End If

    Set db = New notesdatabase("", "")
    Call db.openmail
    Dim cEntry As New NotesDocument(db)
    Dim rtitem As Variant
    Dim itemIcon As NotesItem
    username = session.UserName
    cEntry.From = note.From(0)
    cEntry.Subject = note.EventDescription
    Set rtitem = note.GetFirstItem("Body")
    Call rtitem.CopyItemToDocument(cEntry, "Body")
    cEntry.Form = "Appointment"
    cEntry.AppointmentType = "2"
    cEntry.tmpWasMailed = "1"
    cEntry.ExcludeFromView = "D"
    cEntry.OrgTable = "P0"
    cEntry.Location = note.Location
    cEntry.calendarDateTime = note.datelist
    Set itemIcon = New NotesItem(cEntry, "_ViewIcon", 9)
    itemIcon.IsSummary = True
    cEntry.Logo = "stdNotesLtr0"
    cEntry.StartDate = note.EventStartDate
    cEntry.EndDate = note.EventEndDate
    Call cEntry.save(True, True)
    Messagebox "This document has been added to your calendar. ", 0, "Add Complete"
    End Sub

  • Mal ein Beispiel von mir.
    Var-Definitionen stehen in einer Library.
    In der aktuell offenen Maske wird ein Besichtigungstermin erfasst.


    Sub Click(Source As Button)
    InstantiateVariables
    Dim notesItem As NotesItem
    Call uidoc.Refresh( IncludeRichTextItems)

    ' Übertragen des Eintrags in den persönlichen Kalender des Users
    maildb.OpenMail
    flag = maildb.Isopen
    If flag = True Then
    Set profile = maildb.GetProfileDocument("CalendarProfile")
    Else
    Msgbox ERROR_MSG_1 & Chr(13) & ERROR_MSG_2, MB_ICONSTOP,ERROR_TITLE
    End If


    startd = Datevalue(doc.StartDate(0))
    start = Timevalue(doc.StartTime(0))
    ended = Datevalue(doc.StartDate(0))
    ende = Timevalue(doc.EndTime(0))

    Set calendarentry = New NotesDocument(maildb)

    ' Verweis auf den Eintrag im Kalender über seine UniversalID
    universalID$ = calendarentry.UniversalID
    doc.EntryUID = universalID$
    Call doc.save(True, True)

    '----------------------------------------------------------------------------------------
    Set notesItem = calendarentry.ReplaceItemValue( "$PublicAccess", "1" )
    Set notesItem = calendarentry.ReplaceItemValue( "_ViewIcon", 160)
    Set notesItem = calendarentry.ReplaceItemValue( "Repeats", "")
    Set notesItem = calendarentry.ReplaceItemValue( "SequenceNum", 1)

    With calendarentry
    .Form = "Appointment" ' Kalendereintrag
    .Logo = profile.DefaultLogo(0)
    .MailOptions = "0"
    .From = doc.From
    .AppointmentType = "0" ' Termin
    .tmpEventLabel = "Besichtigungstermin"
    .OrgConfidential = "" ' als Privat markieren ist leer

    .StartDate = startd
    .StartTime = start
    .StartDateTime = doc.StartDateTime
    .EndDate = ended
    .EndTime = ende
    .EndDateTime = doc.EndDateTime
    .CalendarDateTime = doc.StartDateTime

    .Location = doc.Location
    .Categories = "Besichtigungstermine"
    .Subject = doc.CompanyName
    End With

    Call calendarentry.Save (True, True)
    uidoc.Close (True)

    End Sub

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)