Autor Thema: variant does not contain object  (Gelesen 1549 mal)

Offline lio

  • Frischling
  • *
  • Beiträge: 36
  • Geschlecht: Männlich
variant does not contain object
« 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
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
danke lio

Offline motte

  • Frischling
  • *
  • Beiträge: 3
  • Geschlecht: Männlich
Re: variant does not contain object
« Antwort #1 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!
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline lio

  • Frischling
  • *
  • Beiträge: 36
  • Geschlecht: Männlich
Re: variant does not contain object
« Antwort #2 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
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
danke lio

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: variant does not contain object
« Antwort #3 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

« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Meff

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.095
  • Geschlecht: Männlich
  • Das Denken der Zukunft muß Kriege unmöglich machen
    • apparet id etiam caeco
Re: variant does not contain object
« Antwort #4 am: 24.08.02 - 22:41:58 »
Hi lio,

welche Berechtigung hast Du den auf die DB ?

Meff ;)
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
"Zwei Dinge sind zu unserer Arbeit nötig: Unermüdliche Ausdauer und die Bereitschaft, etwas, in das man viel Zeit und Arbeit gesteckt hat, wieder wegzuwerfen."
Albert Einstein

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re: variant does not contain object
« Antwort #5 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.
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz