Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: lio am 22.07.02 - 14:12:43
-
Hallo Leute,
ich verstehe nicht, warum er mir immer die Fehlermeldung:
varian does not contain object
anzeigt.
Folgendes Script ist (leicht abgewandelt) aus der Hilfe Datei von Notes. Es "liegt" im Ereignis Queryopen einer Maske.
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim uidoc As NotesUIDocument
Dim acl As NotesACL
Dim entry As NotesACLEntry
Set db = session.CurrentDatabase
Set acl = db.ACL
Set entry = acl.GetEntry( session.CommonUserName )
If entry.IsRoleEnabled( "[BWA]" ) = True Then End
lio ??? :D
-
Hallo lio,
wenn ich Dich richtig verstanden habe, willst Du das Öffnen des Dokumentes nicht zulassen, wenn der Benutzer nicht eine Bestimmte Rolle hat?
Versuchs mal hiermit:
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 entry.IsRoleEnabled("[BWA]" ) Then
continue = True ' es geht weiter
Else
continue = False ' query open wird abgebrochen
End If
End Sub
Ich hoffe es klappt!
-
Hi Motte,
erstmal danke für Deine Mühe. Ich habe Dein Script mal ausprobiert und es kam folgende Meldung:
Object Variable not set
Ich kann mir das einfach nicht erklären, wo das Problem in diesem Fall ist????
Lio :P
-
Hi,
um zu prüfen, ob für den angemeldeten User eine bestimme Rolle gesetzt ist, habe ich mal folgende Funktion geschrieben.
Obige Methode über die ACL hat den Nachteil, dass Rollen, die für eine Gruppe gesetzt wurden, in denen der User enthalten ist nicht erkannt werden. Mit der Funktion hier, werden auch diese erkannt.
%REM
===================================================================
Funktion: RoleEnabled
---------------------------------------------------------------------------------------------------------------------------------------
Beschreibung :
Diese Funktion prüft ob eine bestimmte Rolle einem User zugeordnet ist. Funktioniert
auch wenn die Rolle einer Gruppe zugeordnet ist, in der der User Mitglied ist.
----------------------------------------------------------------------------------------------------------------------------------------
Parameter und Rückgabe:
Parameter:
Bezeichnung Typ Beschreibung
sRole String Name der Rolle
Rückgabe:
True (1) wenn Rolle gesetzt, sonst False
----------------------------------------------------------------------------------------------------------------------------------------
Benötigte Routinen und Bibliotheken:
Routine Bibliothek
----------------------------------------------------------------------------------------------------------------------------------------
Erstellt am 01.02.2001 durch Axel Matthies
----------------------------------------------------------------------------------------------------------------------------------------
Letzte Änderung am:
===================================================================
%END REM
Function RoleEnabled(sRole As String) As Integer
Dim vResult As Variant
vResult = Evaluate(|@IsMember("| & sRole & |"; @UserRoles)|)
If vResult(0) = 1 Then
RoleEnabled = 1
Else
RoleEnabled = 0
End If 'If vResult(0) = 1
End Function
Beispiel-Aufruf:
If RoleEnabled("[Administration]") Then
'Rolle gesetzt
Else
'Rolle nicht gesetzt
End If
Ich hoffe das hilft Dir weiter.
Axel
-
Hi lio,
welche Berechtigung hast Du den auf die DB ?
Meff ;)
-
hihi..das war so ein typisches Problem mit der ACL Klasse und Notes 4.5 (auch in anderen Klassen), wo man immer graue Haare kassiert hat: es ist anscheinend für Notes 4.5 ein Riesenunterschied, ob man den Short- oder Langnamen genommen hat.
Nimm mal folgenden Code (wie ein Poster bereits reingeschrieben hat...glaube, daß Du da wohl auf jeden Fall nen Fehler machst):
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim uidoc As NotesUIDocument
Dim acl As NotesACL
Dim entry As NotesACLEntry
Set db = session.CurrentDatabase
Set acl = db.ACL
Set entry = acl.GetEntry( session.UserName )
If entry.IsRoleEnabled( "[BWA]" ) = True Then End
Ab Lotus 4.6x (weiß nicht mehr genau welches..wohl schon in 4.64 war das ok, da es bei mir auf dem alten Client funzt) wars iO.
Wenn Du mir net glaubst:
http://www-1.ibm.com/support/manager.wss?rs=1&rt=0&org=sims&doc=3BCF2D089134EC3680256517004B2F51
Oder halt die Function eines der letzteren Poster.