Autor Thema: DeleteRole klappt nicht mit Klammereinträge  (Gelesen 1729 mal)

Offline yes2002

  • Aktives Mitglied
  • ***
  • Beiträge: 193
  • Ich liebe dieses Forum!
DeleteRole klappt nicht mit Klammereinträge
« am: 16.07.03 - 15:01:41 »
Hallo,

ich möchte aus einer Menge von Datenbanken die Rolle (Test 1) löschen.
Und das gelingt mir nicht - hier das Script:

Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Set db = session.CurrentDatabase
Set acl = db.ACL
Call acl.DeleteRole( "(Test 1)" )
Call acl.Save

Fehlermeldung - die Rolle gibt es nicht.

In der ACL-Box sehe ich diese und dieses Script zeigt mir auch die Rolle:

Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Set db = session.CurrentDatabase
Set acl = db.ACL
Forall r In acl.Roles
  Messagebox( r )
End Forall

Was mache ich falsch - ich tippe es liegt an dieser blöden Klammer, aber wie komme ich jetzt an die Rolle ran?
Danke!

Offline MisterDa

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
  • Was zählen Schafe, wenn sie nicht schlafen können?
Re:DeleteRole klappt nicht mit Klammereinträge
« Antwort #1 am: 16.07.03 - 15:06:27 »
Probier mal, die Rolle in eckige Klammern zu schreiben..
Also:
Call acl.DeleteRole( "[Test 1]" )

oder machs wie in der Hilfe ohne Klammern:
This script removes the Developer role from the ACL of the current database.
Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Set db = session.CurrentDatabase
Set acl = db.ACL
Call acl.DeleteRole( "Developer" )
Call acl.Save

musst halt mal probieren.. ;)
Gruß
MisterDa
« Letzte Änderung: 16.07.03 - 15:11:47 von MisterDa »
Win2k
Designer 5.08

Offline yes2002

  • Aktives Mitglied
  • ***
  • Beiträge: 193
  • Ich liebe dieses Forum!
Re:DeleteRole klappt nicht mit Klammereinträge
« Antwort #2 am: 16.07.03 - 15:33:16 »
Hi,

ich habe diese Geschmacksrichtungen probiert - kein Erfolg:

Call acl.DeleteRole( "Test 1" )
   Call acl.DeleteRole( "[Test 1]" )
   Call acl.DeleteRole( "(Test 1)" )
   Call acl.DeleteRole( "\(Test 1)\" )

Hat jemand noch eine Idee ... vielleicht capi?

Glombi

  • Gast
Re:DeleteRole klappt nicht mit Klammereinträge
« Antwort #3 am: 16.07.03 - 15:39:19 »
Hi,
das hast Du wohl noch eine Notes Release 2 Datenbanken. Da gab es keine Rollen, sondern 5 Privileges (Berechtigungen). Da das keine Rollen sind, kann man die auch nicht mit DeleteRole löschen.

Aus der Knowledge base:
Roles Property of NotesACLEntry Class Also Returns Privileges; "Error 4210: Role Name Not Found..."

Problem:

You have a database that was designed originally in Notes Release 2x, and the database still contains Privileges in the Access Control List (ACL).

Using LotusScript, you find that the Roles property of the NotesACLEntry class (NotesACLEntry.Roles) returns both Privileges and Roles for the ACL entries in the database.  When, however, you attempt to use a Privilege for the name$ parameter in any of the methods in the NotesACLEntry class (Disable, Enable, IsRoleEnabled, or Remove), the following error occurs:

"Error 4210: Role name (role) not found in line"

Example:

The following sample code illustrates this issue:

Set acl = acl.GetEntry("entry name")
  Forall r in aclentry.Roles
  Msgbox "Available Role" & r      'This line returns both roles and privileges. (Privilege names include parentheses.)
If aclentry.IsRoleEnabled(r) Then  'This line results in the error: "Error 4210: Role name (role) not found in line"

Solution:

This issue was reported to Lotus Quality Engineering, and it was determined that LotusScript is functioning as designed.  The documentation, however, needs to be updated to point out the limitations on manipulating privileges using LotusScript.

To fully address this issue, migrate the remaining privileges to roles, and you can then manipulate them using LotusScript.

Supporting Information:

Roles were introduced in Notes Release 3.  For reasons of backward compatibility, however, privileges continue to be recognized.  They are displayed enclosed in parentheses (rather than brackets) in the Roles dialog of the Access Control List in databases.

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:DeleteRole klappt nicht mit Klammereinträge
« Antwort #4 am: 16.07.03 - 17:42:39 »
Interessantes Problem ;-)
First of all: Wenn es mit LS nicht geht, obwohl vorgesehen, braucht man es mit der C-API gar nicht zu probieren - LS ruft ja auch nix anderes auf (meistens ;-)
Ich habe das eben mal mit Deinem Code nachvollzogen und hab' wieder was dazu gelernt: Ob ich nun
"Test 1" oder
"(Test 1)" oder
"[Test 1]"
löschen lasse - es klappt immer mit NotesACL.DeleteRole.

Kann es vielleicht etwas ganz, ganz simples sein: Da ist irgendwo ein Leerzeichen (oder ein nicht sichtbares) Zeichen mehr im Rollennamen Deiner ACL ?

HTH,
Bernhard

Offline yes2002

  • Aktives Mitglied
  • ***
  • Beiträge: 193
  • Ich liebe dieses Forum!
Hut ab Glombi!
« Antwort #5 am: 16.07.03 - 18:35:51 »
... genau in die Richtung geht es wohl.
Wieder was gelernt Danke!

Glombi

  • Gast
Re:DeleteRole klappt nicht mit Klammereinträge
« Antwort #6 am: 16.07.03 - 20:53:44 »
Hi Bernhard,
diese Dinge kriegst Du mit Script nicht raus. Vielleicht aber doch mit der API, denn die gab es auch schon zu R2 Zeiten (lang ist es her, kann mich noch dunkel erinnern...)

Andreas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz