Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: bob am 25.08.02 - 18:25:30

Titel: Queryclose: Dok ist neu und wurde nicht verändert
Beitrag von: bob am 25.08.02 - 18:25:30
Hi,

in einer DB hab ich 2 identische Masken "frmNormal" und "frmTest".
Im Queryclose steht folgendes Script:
---------------------------------------------------
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
     
     If Source.EditMode = False Then
           Exit Sub
     End If
     
     Dim doc As NotesDocument
     Set doc = Source.Document
     
     If doc.Bereich (0) = "TEST" Then
           doc.Form = "frmTEST"
     Else
           doc.Form = "frmNormal"
     End If
     
     Call doc.Save (True, False, True)
     
End Sub
---------------------------------------------------

Wenn also im Feld "Bereich" "Test" steht, dann wird dem Dokument die Maske "frmTest" zugeordnet, falls nicht wird "frmNormal" zugeordnet.


Nun benötige ich einen Zusatz:
Wenn das Dokument nämlich neu ist, und keine Änderungen erfolgt sind (bzw. die Maske verlassen wird mit "Änderungen speichern NEIN"), dann wird trotzdem ein leeres Dokument gespeichert. Das möchte ich eben nicht.

Hat vielleicht wer von Euch einen Zusatz für dieses Script, mit der ich bei einem neuen Dok, welches nicht gespeichert wurde, eine Speicherung eines Doks verhindern kann?


Danke schon im Voraus!

Gruß,
Bob
Titel: Re: Queryclose: Dok ist neu und wurde nicht veränd
Beitrag von: Rob Green am 25.08.02 - 19:05:32
hm..
also Bedingung: Doc neu und wird aber nicht gespeichert, damit die QueryClose Story korrekt getriggert wird:

- hidden field, berechnet: "savechecker"
- Formel: @if(isdocbeingsaved;"1";"0")

Wenn Doc also gespeichert wird, steht Feldinhalt auf "1". Sonst eben auf "0". Da man das Teil eh nur einmal benötigt (um eben Zustand "nicht gesaved" abzufragen), kann man diese einfache Formel so nutzen.

Sonst müßte man checken, ob erneut gespeichert wird. Aber dann kann man ja mit einem Zähler arbeiten, der beim Laden (PostOpen) ausgelesen wird und beim Saven über QuerySave hochgezählt und beim Closen mit dem Anfangswert auf Postopen verglichen wird (wenn nicht gespeichert wird, wird der Zähler nicht hochgesetzt, da Event QuerySave nicht getriggert wird).

Was auch geht und auch sehr sehr einfach ist für den QueryClose Check = "flag = notesUIDocument.IsNewDoc". Aber das wäre ja viel zu easy.

Die o.g. Ergebnis-Werte nutzt Du dann im QueryClose als
IF Wert="x" Then
mach nix also Exit Sub
Sonst
mach Dein Sript weiter

Was Du nimmst? Ist Deine Sache  ;D
Titel: Re: Queryclose: Dok ist neu und wurde nicht veränd
Beitrag von: bob am 26.08.02 - 14:56:58
Danke, genau das hatte ich gesucht!

bye,
Bob