Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet 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
-
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
-
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
-
... 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
-
... 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
-
... Sorry, das ist natürlich richtig. Wie ich sehe hast du das Objekt NotesName gefunden...
ata :-[ :-[ :-[
-
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
-
... hey, das Konstrukt habe ich so auch noch nicht gesehen - ich bin baff... :o :o :o
ata