Maske beim Speichern nur einmal senden

  • Hallo Forum Mitglieder,


    habe wieder eine Frage, die vermutlich sehr leicht zum lösen ist.


    Ich habe eine Maske, die beim Speichern (über Postsave) gesendet wird. Und ich möchte, dass mit LotusScript so programmieren, dass es nur einmal gesendet wird, also dass nur beim ersten Speichern eine E-Mail versendet wird und beim Weiteren Speichern nur das Dokument gespeichert wird.


    Dim ws As New NotesUIWorkspace
    Set uidoc = ws.CurrentDocument
    Dim session As New NotesSession
    Dim doc As NotesDocument
    Dim maildoc As NotesDocument
    Dim rtitem As NotesRichTextItem

    Set doc = uidoc.Document
    Set db = doc.Parentdatabase
    Set profile = db.Getprofiledocument("DBProfile", "Main")
    Set maildoc = New NotesDocument(db)
    Set rtitem = New NotesRichTextItem( maildoc, "Body" )
    maildoc.form = "Memo"
    maildoc.Subject = "Neuer Eingang Mitarbeitereintrittsformular"
    maildoc.sendto = profile.prfl_mailaddress
    (......Body Teil Feldwerte....)



    If (doc.doc = IsNewDoc) Then
    maildoc.send(False)
    End If
    If (doc.doc = Not IsNewDoc) Then
    Call maildoc.Save(True,True)
    End If


    Was stimmt an der Formel nicht?


    Vielen Dank im Voraus :)

  • was bitte soll diese Zeile:

    Code
    If (doc.doc = Not IsNewDoc) Then


    Ausserdem: Im PostSave ist das Dokument NIE neu, denn es wurde ja schon gespeichert... IsNewDoc kann man nur im QuerySave abfragen (und dann nur zuverlässig, wenn das Dokument nicht mit Script erstellt wurde, denn dann ist u.U. IsNewDoc immer falsch...)

  • Hallo Tode1 vielen Dank für deine schnelle Antwort..


    Hat geklappt danke..


    Nur noch eine Frage..


    Könnte ich auch das so machen, dass ich in die Maske ein verstecktes Feld einbaue, dem sein Vorgabewert 0 ist. Und dann schreiben wenn das Feld als Wert 0 hat, dann senden und Wert auf 1 setzen. Wenn das Feld als Vorgabewert 1 hat dann nur speichern..


    Ich habe mal angefangen aber klappt nicht so richtig, wie ich es mir vorgestellt habe. :(


    Feldname: MailGesendet


    If (MailGesendet=0) Then
    maildoc.send(False)
    MailGesendet=1
    End If
    If (MailGesendet=1) Then
    Call maildoc.Save(True,True)
    End If

  • Warum erstellst Du überhaupt ein Maildoc, wenn Du es doch gar nicht senden willst !?


    Ich glaube: Du hast Dir diesen Code irgendwoher kopiert, hast aber keine Ahnung, was da passiert... Empfehlung: Dringend einen Script- Kurs machen, Dir fehlen alle Basics...


    Ausnahmsweise mal fertiger Code, der in etwa das machen sollte, was Du WIRKLICH willst. Um nicht doppelt speichern zu müssen, habe ich den Code ins QuerySave verschoben... Sonst müsstest Du nach doc.MailGesendet = 1 noch ein doc.Save( True, True ) reintun....