Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: dasRalph am 24.10.02 - 19:18:10

Titel: Namen der User einer Rolle...
Beitrag von: dasRalph am 24.10.02 - 19:18:10
Hallo!!!

Ich hab ein Dokument, welches nur bestimmte Leute bearbeiten dürfen. Diese Leute hab ich alle in einer Rolle aufgenommen. Die Namen dieser Rolle möchte ich am Ende des Dokumentes anzeigen. Sprich in etwa so:

Dies Dokument darf nur durch Hans Maier, Fritz Otto, Heinz Müller bearbeitet werden.

Dazu wollte ich nun alle Namen auslesen, die der entsprechenden Rolle zugeordnet sind. Dies löse ich so:

<ANFANG>
Sub Postopen(Source As Notesuidocument)
   
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim acl As NotesACL
   Dim entry As NotesACLEntry
   Dim roleName As String
   Dim text As Variant
   Set uidoc = workspace.CurrentDocument
   Set db = session.CurrentDatabase
   Set acl = db.ACL
   
   roleName = "[Moderator]"
   Set entry = acl.GetFirstEntry
   While Not ( entry Is Nothing )
      If ( entry.IsRoleEnabled( roleName ) = True ) Then
         text = entry.Name & ";" & text         
      End If
      Set entry = acl.GetNextEntry( entry )
   Wend
   Call uidoc.FieldSetText ("Rolle", Trim$(text))
   
   Call uidoc.refresh
   
End Sub
<ENDE>


Mein Problem, es kommt als Ergebnis "Hainz Müller/xxx/xxx/xxx/DE" raus, ich will aber nur "Heinz Müller" haben.

Hat jemand eine Idee???

Schon mal besten Dank!!!

Ralph
Titel: Re:Namen der User einer Rolle...
Beitrag von: Christopher am 24.10.02 - 19:42:39
Hallo,

schau Dir mal das Tool von Eknori an "Leser- und Autorenfelder unter Kontrolle"

evtl hilft Dir das weiter.

   
http://www.eknori.de/downloads.htm
Titel: Re:Namen der User einer Rolle...
Beitrag von: dasRalph am 24.10.02 - 20:00:38
Hallo!!!

Nee ist nicht das was ich suche, ich hab ja kein Problem mit den Autoren- bzw. Leser-Feldern sondern mit dem Format des Namens das aus meiener Formel raus kommt :-(

Aber trotzdem Danke!!!
Ralph
Titel: Re:Namen der User einer Rolle...
Beitrag von: ata am 24.10.02 - 20:22:28
... in Formelsprache:

@Name([CN] ; @UserName)

... in LotusScript

Dim Session As New NotesSession
Dim CommonName As String

CommonName = session.CommonName

... wenn ich mich nicht irre...

ata
Titel: Re:Namen der User einer Rolle...
Beitrag von: dasRalph am 24.10.02 - 21:03:34
... in LotusScript

Dim Session As New NotesSession
Dim CommonName As String

CommonName = session.CommonName

ata

Ja so in etwa stimmt es, doch es gibt den Namen des aktuellen User's aus, ich brauchte dies aber für den Inhalt der Variable "text". Es wäre also "text.CommonName" gewesen, doch da hab ich immer eine Fehlermeldung bekommen, doch nun hab ich die Lösung hingefummelt *freu* und hier ist sie. Das Script steht im Postopen der Maske, such alle Namen der User, die in der Rolle "Moderator" sind raus und schreibt das Ergebnis in das Feld "Rolle", sogar mit einem "und" zwischen dem vorletzten und letzten Namen ;-)

<ANFANG>
Sub Postopen(Source As Notesuidocument)
   
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim acl As NotesACL
   Dim entry As NotesACLEntry
   Dim roleName As String
   Dim text, textLinks, textRechts As Variant
   Dim userName As NotesName
   Dim user As String
   Set uidoc = workspace.CurrentDocument
   Set db = session.CurrentDatabase
   Set acl = db.ACL
   roleName = "[Moderator]"
   Set entry = acl.GetFirstEntry
   While Not ( entry Is Nothing )
      If ( entry.IsRoleEnabled( roleName ) = True ) Then
         Set userName = New NotesName(entry.Name)
         user = userName.Common
         text = user & ", " & text
      End If
      Set entry = acl.GetNextEntry( entry )
   Wend
   
   text = Trim$(Left(text, Len(text)-2))
   textLinks = Strleftback(text, ", ")
   textRechts = Strrightback(text, ", ")
   Call uidoc.FieldSetText ("Rolle", textLinks & " und " & textRechts)
   
End Sub
<ENDE>

Ralph
Titel: Re:Namen der User einer Rolle...
Beitrag von: ata am 24.10.02 - 21:08:34
... Sorry, das ist natürlich richtig. Wie ich sehe hast du das Objekt NotesName gefunden...

ata   :-[ :-[ :-[
Titel: Re:Namen der User einer Rolle...
Beitrag von: eknori am 07.11.02 - 18:26:02
OK, um auch diesen Thread zu schließen; hier die Funktion in Script

Function UIDCn(ids)
' This function performs roughly the same task as @Name([CN]...);
' If passed an array, it will process each element separately and return an' array as a result.
   If Isarray(ids) Then
      Dim i%
      Redim r$(Lbound(ids) To Ubound(ids))
      For i = Lbound(ids) To Ubound(ids)
         r$(i) = UIDCn(ids(i))
      Next
      UIDCn = r$
   Else
      UIDCn = Trim(Replacesubstring(vWord(vWord(Cstr(ids), "/<@", 1), "=", -1), """", ""))
   End If
End Function

eknori
Titel: Re:Namen der User einer Rolle...
Beitrag von: ata am 07.11.02 - 18:43:55
... hey, das Konstrukt habe ich so auch noch nicht gesehen - ich bin baff... :o :o :o

ata