Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: my head am 29.10.03 - 07:32:19
-
hallo!
hab mal wieder ne ganz dumme frage...
hab ne maske, die im edit-modus geöffnet werden muss... wie kann verhindern, dass "leser" die maske öffnen und ne standardfehlermeldung erhalten...
will in den aufruf einbauen: @if(rechte<=leser;"kein Zugriff";öffnen der maske)
geht das ohne rollen?
-
Im QueryOpen Event der Maske entweder mit der QueryAccess-Methode der NotesDatenbank oder mit @UserAccess
-
hab festgestellt, dass "leser" zugriff auf masken im edit-mod haben...
kann ich die standard fehlermeldung so wie oben beschrieben abfangen?
-
Weiss ich nicht, würde aber meinen, genau dazu ist der QueryOpen da, sonst müsstest Du das im Initialize machen, aber da wird es dann etwas sehr trickreich, die Instanziierung abzubrechen, weiss ich auch nicht, ob das funktionieren würde. Probier doch einfach mal, was passiert, wenn Du im QueryOpen einfach mal ein Continue=False einsetzest. Da siehst Du sofort, ob die Fehlermeldung noch kommt oder nicht.
-
.. das kann nicht sein, dass "leser" editieren können. bitte mal das/die leserfeld(er) überprüfen. ansonsten geht's wie oben beschrieben.
-
Wenn ich "meinen Kopf" richtig verstehe, meint er, dass Leser ein Dokument mit einer Maske, die in den Edit-Mode wechseln, anwerfen können, aber eine Fehlermeldung bekommen, soweit ist das normal, nur etwas sehr verkürzt von ihm ausgedrückt, hat aber nix mit Leserfeldern zu tun -- meine Interpretation
-
Hi,
das Ganze muß mit Script im QueryOpen-Event passieren. die Formel-Funktion @UserAccess kann nicht verwendet werden, da die Funktion nicht in Evaluate - Statements verwendet werden kann.
Die Lösung sieht so aus:
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Set db = session.CurrentDatabase
Set acl = db.ACL
Set entry = acl.GetEntry( session.UserName )
If Not ( entry Is Nothing ) Then
If entry.Level = ACLLEVEL_READER Then
Messagebox "Sie haben nur Leserechte und können die Maske nicht öffnen"
Continue = False
End If
End If ' If Not ( entry Is Nothing ) Then
End Sub
Vorraussetzung ist natürlich, das die entsprechenden User direkt in der ACL als Leser enthalten sind.
Axel