Autor Thema: Userroles - Scriptfehler  (Gelesen 2831 mal)

Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Userroles - Scriptfehler
« am: 20.04.05 - 14:52:17 »
Hallo,

habe folgendes Script:

Sub Click(Source As Button)
   
   On Error Goto ErrorHaendler
   
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim db As notesdatabase   
   Dim count As Integer
   
   Set uidoc=ws.CurrentDocument
   Set doc = uidoc.Document
   Set db = doc.ParentDatabase
   
   If  ws.Prompt(Prompt_YESNO,"Neuzuweisung?",_
   "Wollen sie?") = 0 Then
      Exit Sub
   Else
      Dim acl As NotesACL
      Dim entry As NotesACLEntry      
      
      Set acl = db.ACL
      Set entry = acl.GetEntry(session.UserName)
      
      Forall role In entry.Roles
         entryRole = entryRole & role
      End Forall
      
      Select Case entryRole
      Case "[Test]" :
         doc.department_detail = "v_P"

                                ........ usw.

Wenn der User einzeln in der ACL ist funktioniert das auslesen der Rolen, wenn der User aber in einer Gruppe ist bekomme ich in der Zeile :

      Forall role In entry.Roles

die Fehlermeldung: Variable not set.

Wie kann ich die Userrole auslesen wenn der User einer Gruppe angehört?
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Userroles - Scriptfehler
« Antwort #1 am: 20.04.05 - 15:01:12 »
Hallo,

mit 

Set entry = acl.GetEntry(session.UserName)

holst Du einen bestimmten Eintrag in der ACL.

Ich würde über alle Einträge der ACL laufen.
Wenn es ein Namenseintrag ist, kannst Du den Wert direkt mit session.UserName vergleichen.
Wenn es ein Gruppenname ist, musst Du erst aus dem DD alle Members holen und dann jeden einzelnen Member mit session.UserName vergleichen.

Dirk
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: Userroles - Scriptfehler
« Antwort #2 am: 20.04.05 - 15:05:05 »
Du könntest aber auch mit

Dim rollen As Variant
rollen = Evaluate( "@Userroles" )

die UserRoles des Users in ein Array schreiben und dann damit weiter arbeiten.
†090620141300

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Userroles - Scriptfehler
« Antwort #3 am: 20.04.05 - 15:08:16 »
 :-[  Evaluate habe ich gar nicht in betracht gezogen  :(

Ist natürlich schneller  ;D
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Userroles - Scriptfehler
« Antwort #4 am: 20.04.05 - 15:20:03 »
Ja, das hab ich auch schon probiert:

Dim rollen As Variant
   rollen = Evaluate( "@Userroles" )
   Msgbox rollen


Fehler: Type mismatch bei Zeile msgbox rollen
Im Debuger zeigt er mir die Rolle von mir an, gibt Sie mir aber nicht aus, warum?

2)
Wie kann ich dann alle Usernamen auslesen von der ACL, auch wenn Sie in einer Gruppe sind?
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: Userroles - Scriptfehler
« Antwort #5 am: 20.04.05 - 15:30:26 »
1.)
Evaluate liefert dir ein Array zurück
Also
rollen(0) = "erste UserRole"
rollen(1) = "zweite ....

Dim rollen As Variant
rollen = Evaluate( "@Userroles" )
Forall x in rollen
Msgbox x
end Forall
Damit bekommst du alle Rollen, die der User hat nacheinander angezeigt.

2.)
Um User aus einer Gruppe auszulesen brauchst du eine rekursive Funktion, da in einer Gruppe ja weitere Gruppen stehen können.
†090620141300

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Userroles - Scriptfehler
« Antwort #6 am: 20.04.05 - 15:30:59 »
Weil Evaluate ein Variant zurückgibt und du Variants nicht in der Messagebox direkt ausgeben kannst. Mit Rollen(0) würde das in diesen Fall gehen.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Userroles - Scriptfehler
« Antwort #7 am: 20.04.05 - 15:32:09 »
1)
rollen ist vom Typ Variant

Geht nur so

if Not( IsEmpty( rollen ) Then
  forall vRole in rollen
   msgbox cstr( vRole )
  end forall
end if

2) Du musst anhand des Gruppennamens das Gruppen-Dok im DD holen und dort das Feld "Members" auslesen

Dirk
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Userroles - Scriptfehler
« Antwort #8 am: 20.04.05 - 15:33:02 »
War ich wieder mal zu laaannngsaaammmmm..  :-\
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Userroles - Scriptfehler
« Antwort #9 am: 20.04.05 - 16:18:45 »
Danke Jungs,

bin heute total auf der Leitung gestanden, so ein Tag, der sollte schnell vergehn!

Mfg Horst

Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz