Continue=False für die Formelsprache

In LotusScript lassen sich bestimmte Vorgänge (Aktivitäten im Frontend) durch die Anweisung Continue = False im entsprechenden Ereignis vorzeitig stoppen.

In der Formelsprache existiert eine solche Möglichkeit grundsätzlich nicht. In wenigen Sonderfällen kann man jedoch eine vergleichbare Lösung realisieren.

Im Beispiel kann so in Abhängigkeit eines Feldes (DokStatus) verhindert werden, dass der Endanwender in den Bearbeiten-Modus wechseln kann.

In der Formelsprache existiert eine solche Möglichkeit grundsätzlich nicht. In wenigen Sonderfällen kann man jedoch eine vergleichbare Lösung realisieren.

Speichern von Dokumenten verhindern
Das Speichern eines Dokumentes ist einer der angesprochenen Sonderfälle, wo man auch mit der Formelsprache einen vom Anwender ausgelösten Vorgang vorzeitig beenden kann.

Wir gehen wieder davon aus, dass im Dokument (oder der Maske) ein Feld DokStatusexistiert, welches je nach Inhalt das Speichern-Verhalten steuert. Fügen Sie folgenden Code in das Ereignis QuerySave der Maske ein. Dieses Ereignis ist zwar als Vorgabe zur Ausführung auf LotusScript eingestellt, kann aber auf Formelsprache umgeschaltet werden.

Code für R5.x/ND6.x
FIELD SaveOptions := SaveOptions;
@If(
DokStatus = „nicht aktiv“;
@SetField(„SaveOptions“;“0″);
@SetField(„SaveOptions“;@DeleteField)
)

Code für ND6.x
@If(
DokStatus = „nicht aktiv“;
FIELD SaveOptions := „0“;
FIELD SaveOptions := @DeleteField
)

Sobald im Feld DokStatus der Wert „nicht aktiv“ enthalten ist, wird das Feld SaveOptions mit dem Zeichen „0“ (also keine numerische Null) belegt – das verhindert das Speichern des Dokumentes.

Im anderen Falle:

R5.x/ND6.x Code
Durch die Zuweisung FIELD SaveOptions := SaveOptions am Anfang der Formel (ist bei R5.x für die Verwendung der Funktion @SetField erforderlich) wird das Feld bereits erstellt und muss explizit entfernt werden.

Das Dokument wird gespeichert.

ND6.x Code
Auch hier wird das Feld SaveOptions wieder entfernt. Entsprechend den Hinweisen von Andreas in dieser Diskussion kann das Feld SaveOptions in bestimmten Konstellationen (z.B. durch einen Versuch, das Dokument zwischenzuspeichern, verbleibt der gesetzte Wert des Feldes SaveOptions auf „0“ im Frontend erhalten) das Speichern verhindern.

Das Dokument wird gespeichert.

Was hat es mit dem Feld SaveOptions auf sich?
Es handelt sich um einen der (vielen) reservierten Feldnamen in Notes/Domino. Sobald ein solches Feld in z.B. einer Maske existiert und einen der gültigen Werte hat, verhält sich Notes nicht dem Standard entsprechend. Auf diese Weise können Sonderfunktionen realisiert werden. Sie finden selbst weitere Feldnamen, wenn Sie in der Designerhilfe nach SaveOptions suchen.

Mein Tipp Clevere Aktionsschaltflächen in Masken – Teil 3 von 3 vom 2003-08-29 nutzt ebenfalls die Funktionalität des Feldes SaveOptions.

Notes/Domino Version: 5.x, 6.x