Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: lio am 22.07.02 - 14:12:43

Titel: variant does not contain object
Beitrag 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
Titel: Re: variant does not contain object
Beitrag von: motte am 22.07.02 - 23:43:19
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!
Titel: Re: variant does not contain object
Beitrag von: lio am 23.07.02 - 09:35:56
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
Titel: Re: variant does not contain object
Beitrag von: Axel am 23.07.02 - 11:35:27
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.


Zitat

%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

Titel: Re: variant does not contain object
Beitrag von: Meff am 24.08.02 - 22:41:58
Hi lio,

welche Berechtigung hast Du den auf die DB ?

Meff ;)
Titel: Re: variant does not contain object
Beitrag von: Rob Green am 25.08.02 - 19:34:30
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.