Kalendereinträge nach Import von MS Outlook nicht sichtbar

  • Hi,


    ich habe meine Kalendereinträge von Outlook nach Notes importiert. Ich sehe auch alle Einträge unter der Lasche "alle Kalendereinträge". Leider sehe ich sie nicht in den Views Tag, Woche oder Monat.


    Ich habe auch schon "@Command([ToolsRefreshSelectedDocs])" drüberlaufen lassen, brachte aber keine Änderung.


    Für eine Hilfe wäre ich dankbar.


    Ciao

    • Offizieller Beitrag

    überprüfe mal, ob die Dokumente ein Feld "CalendarDateTime" haben. Falls Ja, dann öffne die DB mal im Designer und sieh Dir die Ansicht "($Calendar)" an, benutze F9 - werden die Dokumente angezeigt?


    Ja ... die benötigten Zeit- und Datumsfelder wurden nicht ausgefüllt oder liegen im falschen Datentyp vor.
    Nein ... Import korrigieren und die entsprechenden Felder mit dem richtigen Format füllen.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Erstmal Danke für die Hilfe!!!


    Meine importierten Kalenderdokumente haben kein Feld "CalendarDateTime". Wenn ich von Hand Neue anlege, dann ist dieses Feld vorhanden.


    Nur jetzt ist das Problem, wie ich den Import ändern kann. Ich benutzte "nupgrade.exe 3". Dort kann ich nichts einstellen, Geschweige denn Felder definieren.


    Ciao Wolli

  • Folgendes ist der Auszug eines Scriptes das ich mal geschrieben habe:


  • Kleine Anmerkung: Das geht noch einfacher:
    StartDateTime CalendarDateTime zuordnen
    StartDateTime einem Variant zuordnen (wird ja automatisch Date/Time)
    In einer Schleife bis EndDateTime Step 1 durchlaufen und
    Variant dabei um ein inkremtieren und per ArrayAppend CalendarDateTime aufbügeln.


    Und dabei immer den 13.03.2007 im Auge behalten: Dann hat die Welt zwei Sommerzeiten (USA und "Teile Kanadas"). Was da auf entsprechend aufgestellte Unternehmen zukommt, haben - glaube ich - bisher nur wenige mitbekommen ...


    Bernhard

  • Erstmal vielen Dank, aber in der Sciptsprache von LoNo kenne ich mich nicht im Geringsten aus:


    Ich habe jetzt auch die Felder als Variant definiert:


    Dim StartDateTime As Variant
    Dim EndDateTime As Variant
    Dim CalendarDateTime As Variant
    Set itm = doc.GetFirstItem("StartDateTime")
    Set dt_Start = itm.DateTimeValue
    Set itm = doc.GetFirstItem("EndDateTime")
    Set dt_End = itm.DateTimeValue
    Redim as_Values(0 To 0)
    as_Values(0) = dt.LSLocalTime
    Call dt.AdjustDay(1)
    Do While dt_Start.TimeDifference(dt_End) < 0
    Redim Preserve as_Values(0 To (Ubound(as_values) + 1))
    as_Values(Ubound(as_Values)) = dt.LSLocalTime
    Call dt.AdjustDay(1)
    Loop
    doc.CalendarDateTime = as_Values


    bekomme aber immer den gleichen Fehler:


    "Variant does not contain an object"


    Was heisst das? Wen muss ich wie und wann definieren?

  • Also,


    ich habe jetzt ganz einfache Lösung in LoNo 7 gefunden.


    Man erstellet einen neuen Agenten und definiert als Ziel "alle ausgewählten Dokumente".


    Als Aktion wird Formel ausgewählt mit dieser Formel:


    FIELD CalendarDateTime:= StartDateTime;


    Alles abspeichern, die passenden Dokumente markieren und aus Menü Aktionen starten.


    Das wars!

  • Die Anderen Lösungen funktionieren auch nicht richtig. Es fehlen noch andere Felder. Ich bin gerade dabei einen Agenten zu schreiben, der die Kalenderdokumente korrigiert. Wenn er fertig ist, werde ich ihn hier einmal posten.

  • So, hier mal mein Agent.
    Den Code kann man als Agent in das Adressbuch einfügen.
    Der markierte Eintrag wird dann von dem Agenten bearbeitet.


    Wichtig ist auch das Setzen des Appointmenttype. Da auch dieses Feld bei dem Import der Kalenderdaten aus Outlook fehlt.


    Und wie immer: ich übernehme keine Haftung für irgend etwas



    <-----CUT------>
    Sub Initialize
    On Error Resume Next


    Dim session As New notessession
    Dim curdb As NotesDatabase

    Dim uiws As New NotesUIWorkspace

    Set curdb = session.CurrentDatabase

    Dim db As notesdatabase

    Dim documents As NotesDocumentCollection
    Dim kalender As notesdocumentcollection

    Dim doc As notesdocument
    Dim kalenderdoc As notesdocument
    Dim calendarprofile As NotesDocument

    Dim item As notesitem
    Dim i As Integer
    Dim j As Integer

    Dim temp() As NotesDateTime
    Dim begindate As NotesDateTime
    Dim enddate As NotesDateTime
    Dim ndttmp As NotesDateTime
    Dim daten As String
    Dim apptype As String

    Set documents = curdb.UnprocessedDocuments

    Set doc = documents.GetFirstDocument

    While Not doc Is Nothing

    Set db = New NotesDatabase("","")
    Call db.open(doc.mailserver(0),doc.mailfile(0))
    Print ("-----")
    Print (db.Title)

    Set calendarprofile = db.GetProfileDocument("CalendarProfile")

    'User im CalendarProfile korrigieren
    If Not calendarprofile Is Nothing Then
    calendarprofile.owner = doc.owner(0)
    Call calendarprofile.Save(True,False,False)
    End If

    ' Kalenderdokumente korrigieren

    Set kalender = db.Search({form="Appointment" }, Nothing,False)

    Set kalenderdoc = kalender.GetFirstDocument

    While Not kalenderdoc Is Nothing

    ' If kalenderdoc.HasItem("$CSVersion") Then
    ' Print ("$CSVersion gelöscht")
    ' Call kalenderdoc.RemoveItem("$CSVersion")
    ' End If

    Print (kalenderdoc.subject(0))

    If Not kalenderdoc.HasItem("CalendarDateTime") Then
    Print ("CalendarDateTime berechnen")
    Set item = kalenderdoc.GetFirstItem("starttime")
    Set begindate = item.DateTimeValue
    Set item = kalenderdoc.GetFirstItem("endtime")
    Set enddate = item.DateTimeValue

    If kalenderdoc.HasItem("RepeatInstanceDates") Then
    kalenderdoc.CalendarDateTime = kalenderdoc.RepeatInstanceDates
    Else
    If Not (begindate Is Nothing Or enddate Is Nothing) Then

    If enddate.TimeDifference(begindate)<0 Then
    Set ndttmp = begindate
    Set begindate = enddate
    Set enddate = ndttmp
    End If
    Print ("Anfang: " & begindate.LocalTime)
    Print ("Ende: " & enddate.LocalTime)

    daten = begindate.LocalTime
    Print (daten)

    i = 0
    Set ndttmp = New NotesDateTime(begindate.LocalTime)
    ' Anzahl feststellen
    While(ndttmp.DateOnly <> enddate.DateOnly)
    i = i + 1
    ' Print (i)
    ndttmp.AdjustDay(1)
    Wend
    Redim Preserve temp(i)

    ' Set temp(0) = begindate
    For j = 0 To i
    Set temp(j) = New notesdatetime(begindate.LocalTime)
    Call begindate.AdjustDay(1)
    Next
    kalenderdoc.CalendarDateTime = temp
    End If
    End If
    End If


    ' Appointmenttype berechnen
    If Not kalenderdoc.HasItem("AppointmentType") Then
    apptype="-"
    Set item = kalenderdoc.GetFirstItem("starttime")
    Set begindate = item.DateTimeValue
    Set item = kalenderdoc.GetFirstItem("endtime")
    Set enddate = item.DateTimeValue

    If apptype="-" And kalenderdoc.HasItem("RequiredAttendees") Then
    apptype="3"
    End If

    If apptype="-" And begindate.GMTTime = enddate.GMTTime Then
    apptype="4"
    End If

    If apptype="-" And begindate.TimeOnly = "04:00:00" And enddate.TimeOnly="20:00:00" Then
    Stop
    If kalenderdoc.HasItem("Repeats") Then
    If kalenderdoc.repeats(0)="1" Then
    apptype="1"
    Else
    apptype="2"
    End If
    Else
    apptype="2"
    End If
    End If

    If apptype="-" Then
    apptype="0"
    End If
    kalenderdoc.appointmenttype= apptype
    End If

    Call kalenderdoc.Save(True,False,False)

    ' Call kalenderdoc.ComputeWithForm(True, False)
    Set kalenderdoc = kalender.GetNextDocument(kalenderdoc)
    Wend
    Set doc = documents.GetNextDocument(doc)
    Wend



    <-----CUT------>