Scriptfehler bei Urlaubstageübernahme in kalender

  • Hallo zusammen,


    mache gerade einen Urlaubschein per Workflow.


    unter anderm habe ich folgende Felder:


    „VomAm“ = Optionsschaltfläche
    „Datum1“ = Datum/Zeit - Anfangsdatum
    „Datum2“ = Datum/Zeit - Enddatum
    „Datum3“ = Datum/Zeit - nur ein Tag


    und eine Button mit folgendem Code:


    REM Kalenereintrag erzeugen
    Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim db As New NotesDatabase ("","")
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    Dim userName As New notesname(session.username)
    Dim dbfilename As String
    Dim dbserver As String
    Dim value As Integer
    Dim datum1datum As String
    Dim datum2datum As String

    Call db.OpenMail
    dbfilename=db.filepath
    dbserver = db.server

    value = Messagebox ("Soll der Urlaub / die Abwesenheit " + Chr(10) + "in den Kalender eingetragen werden?", (4+32+0+0), "Abwesenheit in den eigenen Kalender eintragen")

    If (value = 6) Then

    Set uidoc = ws.CurrentDocument
    datum1datum = uidoc.FieldGetText( "datum1" )
    datum2datum = uidoc.FieldGetText( "datum2" )
    Print datum1datum, datum2datum

    Set uidoc = ws.ComposeDocument (dbserver,dbfilename,"Appointment")
    Call uidoc.FieldSetText("StartDate",datum1datum)
    Call uidoc.FieldSetText("EndDate",datum2datum)
    Call uidoc.FieldSetText("AppointmentType","2")
    Call uidoc.FieldSetText("Subject","Urlaub")
    Call uidoc.Save()
    Call uidoc.Close()

    Messagebox ("Abwesenheit ist in den Kalender eingetragen")
    Else
    Messagebox ("Kalender wurde nicht verändert")
    End If

    End Sub



    Wähle ich in der Optionsschaltfläche „Vom“, habe ich die Auswahl „Datum1“ und „Datum2“.
    Wähle ich in der Optionsschaltfläche „Am“, habe ich die Auswahl „Datum3“.


    Wähle ich nun „Vom“, werden die Urlaubstage in den Kalender eingetragen.
    Wähle ich „Am“ (also nur einen Tag), kommt die Meldung „Object Variable not set“.


    Kann mit bitte jemand sagen, wie der Code ergänzt werden muß?


    Vielen Dank schon mal für Eure Hilfe.


    Gruß Siggi

  • Nachdem ich auf den Button klicke, kommt zuerst "Soll der Urlaub / die Abwesenheit in den Kalender eingetragen werden? Ich bestätige mit "Ja", dann kommt die Meldung.
    Bestätige mit "OK" kommt"Abwesenheit in den Kalender eingetragen........ der Urlaubstag wird aber nicht eingetragen.


    Gruß Siggi

    • Offizieller Beitrag

    ... wie lautet die Fehlermeldung?


    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

  • Tja, da muß ich leider passen. Ich kenne mich nit Script eigentlich nicht aus. Ich habe den Code aus einer anderen DB und habe ihn nur an meine Felder angepaßt.
    Ich vermute, der Fehler liegt einfach daran, daß in dem Script der Bezug zu "Datum3" fehlt.


    Also:
    Wenn "Vom" dann beziehe dich auf "Datum1" und "Datum2", wenn "Am" dann nur "Datum3".


    Nur weiß ich nicht wie daß ins Script mit eingebaut wird.


    Gruß Siggi

    • Offizieller Beitrag

    Debugger einschalten:
    - Menü Datei - Extras - Debug LotusScript


    Code laufen lassen
    - Fortfahren (Schaltfläche) benutzen


    Fehlermeldung (exakter Text) und die Zeile, die dann im Debuger markiert ist hier posten.


    Gruß
    Dirk

  • So, hier der Debug. die 2.te "If (source.InPreviewPane) Then Exit Sub" Zeile ist markiert.


    Sub Queryopen(SourceAs Noteuidocument, ModeAs Integer, IsnewdocAs Variant, ContinueAs Variant)
    If (source.InPreviewPane) Then Exit Sub
    Set csEventObj= New CSCalendarEntry( 1, source.document, source )
    ´For processing´´drafts´´ created in R5
    If Not (source.IsNewDoc) Then
    ´Only way to tell a non-R6 meeting is $CSWISL.
    If Not (source.Document.HasItem(´´$CSWISL´´)) And Not (source.document.HasItem(´´R5Track´´)) Then
    ´need to add this item because, $CSWISL is added in the call to Queryopen() below
    Call source.Document.AppendItemValue(´´R5track´´, ´´1´´)
    End If
    End If
    Call csEventObj.QueryOpen(Isnewdoc, Continue )
    End Sub


    Ich hänge mal ne Testdb mit an. Das kann dann jeder der möchte, mal nachvollziehen.


    Gruß Siggi

    • Offizieller Beitrag

    Und welche Fehlermeldung wird angezeigt?


    Prüfe mal im Debugger was im Objekt Source ist (2. Reiter, unten, Objekt anklicken).


    Ansonsten weichen die Scripte, in dem Dateianhang und das gepostete ab! Welches macht jetzt die Probleme?


    Gruß
    Dirk

  • Also der 2.te Reiter heißt bei mir "Variablen" und da gibt es kein Objekt zum Anklicken. :-?


    Ich habe mir beide Scripte nochmal angesehen und kann keine Abweichung finden. Ich habe ja auch den Button der OriginalDB nur in die TestDB kopiert. Und das gepostete Script habe ich aus dem Button kopiert. Im zweifelsfall nimm bitte das gepostete. :roll:


    Gruß Siggi

    • Offizieller Beitrag
    Code
    Sub Queryopen(Source As Noteuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)


    ist nicht aus einer Schaltfläche sondern aus dem aus einer Maske.


    Schreibe doch bitte die Fehlermeldung auf, die angezeigt wird, bevor der Debugger das Script anhält. Ohne diese Fehlermeldung kann ich nur raten.


    Gruß
    Dirk

  • Diali
    Ich glaube er sollte erst mal genau das tun was du ihm gesagt hast.
    Er hat wohl nur den Debugger angeschalten und dann die Maske geöffnet. Dann steht der Cursor auf der Zeile. Nur ist das kein fehler sondern genau so wie es sein sollte.


    Drück erst mal auf Fortfahren/Continue bis der Fehler auftritt und die dann markierte Zeile ist wichtig

    • Offizieller Beitrag

    im Debugger - 2. Reiter (Variablen)
    Was wird bei bei itemDT und item TM angezeigt?


    [size=xx-large][color=CC0000]Welche Fehlermeldung wird Dir angezeigt ! ! ! ![/color][/size]


    Gruß
    Dirk