Ich hatte gerade was in einer DB eingebaut, und dachte "ach ja, das hatten wir ja schon in Best Practices".
Es geht um diesen Artikel:
[LotusScript]: EditMode für bestimmte Dokumente verwehren (http://www.atnotes.de/index.php?topic=20455.msg128229#msg128229)
Es heißt dort:
Für den Platzhalter THE_CONDITION ist jeweils die konkrete Bedingung zu formulieren. Soll das Editieren generell verhindert werden, kann dieser Zweig auch entfallen.
Zwei Beispiele:
If (Source.EditMode = True) And (Source.Document.Status (0) = "Accepted") Then
oder - ohne Bedingung -
If (Source.EditMode = True) Then
Und:
Sub Querymodechange (Source As Notesuidocument, Continue As Variant)
'Prevent editing a document under a certain condition:
If (THE_CONDITION) Then
Messagebox "You are not allowed to edit this document !"
Meines Erachtens muss es allerdings heißen:
If (Source.EditMode = FalseTrue)
Warum?
Erstmal ist ein Dokument im Lesemodus. Source.EditMode gibt also False zurück. Wechselt nun ein User im geöffneten Doc vom Lesemodus in den EditModus (z.B. via Doppelklick oder Strg+E), so ist für Querymodechange Die Bedingung Source.EditMode=False nach wie vor zutreffend. Erst nach dem Querymodechange ist dann Source.EditMode=True.
D.h. will man einwirken, wenn vom Lesemodus auf den Edit-Modus gewechselt wird, so muss man IMHO auf Source.EditMode = False abfragen.
Oder sehe ich das jetzt falsch?