Sofern du keinen anderen Code hast, der auf doc zugreift, würde ich diesen wie folgt auf das "QueryModeChange" beschränken, da dein doc wahrscheinlich nicht vom PostOpen bis zum queryModeChange "überlebt"
in den Globals:
Option Declare ' wichtig um Compilefehler gleich beim Speichern zu bemerken
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
Dim doc as NotesDocument
Set doc = Source.document
If doc.hasitem("bearbeiten") Then
Call doc.removeitem("bearbeiten")
Else
continue=False
Msgbox"Sie haben keine Berechtigung dieses Dokument zu ändern !"
End If
End Sub
Postopen sollte dann entfallen, aber wie Bernhard schon sagt, sollte in queryopen noch Code, der Continue auf false setzt, wenn das Dok mit Strg+B/E im Editmode geöffnet wird.
Gruß
Roland
Ein doc "überlebt" auf alle Fälle vom PostOpen bis zum QueryModeChange.
Dem "auf alle Fälle" stimme ich nicht zu. Ich würde eher sagen, zu 90%. ;D
Zwischen PostOpen und QueryModeChange kann ja viel Zeit vergehen und diverse Aktionen/Agenten ausgeführt werden.
Wenn nun Code läuft, welcher die Memory-Instanz mit "delete doc" entfernt, dann fliegen alle Instanzen, die das Backend-Dokument cachen, aus dem Speicher.
Ein Agent der Form
set doc = db.getDocumentByUnid(gleicheUNIDwieCurrentUIDoc)
delete doc
würde reichen, damit das Doc eben nicht "überlebt"
(Der Agent kann auch in der Ansicht/anderen Maske ausgeführt werden)
Mit ws.currentDocument hatte ich aber auch schon meine Freude. auf "Source" zurückzugreifen ist hier in der Tat der bessere Weg.
Gruß
Roland