Geburtstage in Kalender eintragen

  • Hallo,


    ich weiss, das Thema ist schon eininge male hier besprochen worden (das u.a. Script stammt auch hier aus dem Forum), jedoch finde ich den Fehler nicht.
    Ich nutze folgenden Agent im pers. Adressbuch, jedoch werden keine Einträge im Kalender erzeugt.



    Sub Initialize
    Dim s As New NotesSession
    Dim address As NotesDocument
    Dim dc As NotesDocumentcollection
    Dim vw As NotesView
    Dim thisdb As NotesDatabase
    Dim maildb As New NotesDatabase( "", "" )
    Call maildb.OpenMail

    Set thisdb = s.CurrentDatabase
    Set dc= thisdb.Unprocesseddocuments
    Set address=dc.GetFirstDocument

    While Not address Is Nothing
    txt="Geburtstag von " & address.FirstName(0) & " " & address.LastName(0)
    If address.birthday(0)="" Then
    Print "Es wurde kein " & txt & " gefunden !"
    Goto weiter
    End If
    Set calentry = New NotesDocument(maildb)
    calentry.Form="Appointment"
    calentry.AppointmentType="Jahrestag | 1"
    calentry.Subject=txt
    calentry.StartDate=address.birthday
    calentry.CalendarDateTime=address.birthday
    calentry.Repeats="1" '
    calentry.RepeatFor="5"
    calentry.Categories="Geburtstag"
    calentry.WebCategories="Geburtstag"
    calentry.Chair=s.Username
    calentry.tmpOwner=s.Username
    calentry.Principal=s.Username
    calentry.Alarms="1"
    ' calentry.OrgRepeat="5"
    ' calentry.OrgTable="A0"

    success = calentry.ComputeWithForm( False, False )
    If success Then
    Call calentry.Save( True, True )
    Print "Kalendereintrag für " & txt & " abgespeichert"
    Else
    Print "Kalendereintrag für " & txt & " nicht abgespeichert"
    End If
    weiter:
    Set address=dc.GetNextDocument(address)
    Wend
    End Sub
    ===============================
    Das Feld in der Maske "Person" enthält folgendes:
    Feldname: Birthday
    Datentyp: Zeit/Datum-Liste oder Zeitraum
    Datenlänge: 12 Byte
    Seq.-Num.: 8
    Doppelte Eintrags-ID: 0
    Feld-Flags: SUMMARY


    02.05.2005




    Da ich nicht so fit in Script bin, weiss ich nicht so recht wo der Fehler liegen könnte.
    Wäre echt nett wenn mir einer unter die Arme greifen könnte.


    Danke im voraus.
    Achim

  • Hi,


    ich habe das Script nur überflogen, aber mir ist direkt eine Sache aufgefallen.
    Wann und wie wird der Agent ausgeführt? Manuell aus dem Menü, oder aber per Aktion in der Ansicht?
    Wenn ja, dann liegt der Fehler darin, dass er gar keine Dokumente in Deinem NAB finden kann:


    Set dc= thisdb.Unprocesseddocuments


    UnProcessedDocuments ermittelt alle Dokument in der Datenbank, die von dem Agenten in Bezug auf das auslösende Ereignis noch nicht bearbeitet wurden. Du kannst diesen Befehl z.B. in einem Agenten der Mail-DB einsetzen und somit alle Neu-Eingänge bearbeiten.


    Zum Testen würde ich mal vor der While-Schleife eine kleine Msg box einbauen "Msgbox dc.count", die Dir die Anzahl ermittelter Docs im NAB anzeigt. Ergibt diese Meldung 0, dann hast Du das Problem gefunden.


    Gruß
    Thomas Heiner
    http://www.tgh-online.de

  • Hi Thomas,


    habe es mal auf "...AllDocuments" geändert und die MsgBox eingebaut, Counter ist größer 0, jedoch werden trotzdem keine Einträge erzeugt.


    Danke für deinen ersten Tip.


    Achim

  • Hi,


    du schreibst, dass keine Einträge erzeugt werden.
    Heisst das, dass überhaupt keine Dokumente erzeugt werden?
    Prüfe bitte mal folgendes:


    1. Schau Dir über die DB-Eigenschaften Deines Kalender auf der zweiten Registerseite die Anzahl gespeicherter Dokumente an.


    2. Lass den Agenten laufen


    3. wiederhole Schritt 1


    Wenn die Anzahl gleich geblieben ist, hat er wirklich nichts erzeugt. Ansonsten, ist wahrscheinlich ein Datenfeld falsch und dafür verantwortlich, dass die Kalendereinträge nicht angezeigt werden.


    Gruß
    Thomas ;)

  • Gibt er in der Statusleiste unten irgendeinen Text aus, wenn du den Agenten ausführst ?
    Eventuell liegt es ja daran, dass das ComputeWithForm nicht korrekt durchgeführt wird und er deswegen die Dokumente nicht speichert

  • Dann kommt die Validierung nicht durch, d.h. irgendein Feldwert ist nicht so gesetzt wie er sein sollte.
    Wird dir wohl nichts übrig bleiben als durch Ausprobieren diesen herauszufinden bzw mal die Maske genauer zu analysieren.

  • Hi,


    ich würde den Wert für Appointmenttype ändern:


    AppointmentType="Jahrestag | 1"


    Im Dokument wird ja nur der Wert "1" gespeichert. Die Maske macht dann den Transfer. Also besser


    AppointmentType="1"


    Gruß
    Thomas ;)

  • Hi,


    es war die Validierung, jedoch funktioniert der Agent nur wenn das Feld Birthday auch mit TT.MM.JJJJ gefüllt ist, spätestens nächster Jahr hab ich damit ein Problem weil der Tag dann in der Vergangenheit liegt :cry: .


    Achim