Domino 9 und frühere Versionen > Entwicklung
CommonUserName in Array umsetzen
TMC:
Hi,
in einem Profildok ist ein Namensfeld (mit Mehrfachwerte zulassen).
In einem Button-Script lese ich das Feld wie folgt aus:
'Hole Profilfelder für das Mailsenden....
Set docprofile = db.GetProfileDocument("profile")
vMailReceiver = docprofile.profile_Receiver 'Emailempfänger
Nach erfolgtem Mailsend zeige ich eine Msgbox an:
szMessage = Implode (vMailReceiver, Chr(10)) 'nutzt die beiliegende Implode-Function!
Messagebox "Status 1 is completed."& Chr(10) & Chr(10) &"E-Mail successful sent to:" & Chr(10) & szMessage, 64, db.title
In der Implode-Function steht (Achtung: nicht Error Handling etc. optimiert!):
--- Code: ---Function Implode (WordList As Variant, Sep As String) As String
Dim ResultString As String
ResultString = WordList(Lbound(WordList))
If Ubound(WordList) = Lbound(WordList) Then Goto Fast
For i = Lbound(WordList)+1 To Ubound(WordList)
If WordList(i) = "" Then Goto Skip Else ResultString = ResultString & Sep & WordList(i)
Skip:
Next i
Fast:
Implode = ResultString
End Function
--- Ende Code ---
In der Messagebox werden nun auch die Namen auch aufgelistet, aber im vollen Format (CN=Rainer Unsinn/OU=.....).
Wie kann ich hier simpel die CommonUserName property einbauen, damit der [CN]-Name erscheint?
Wie geschrieben, es sind mehrere Namen, also ein Array, zu bearbeiten.
TMC
Manfred Dillmann:
Hallo TMC,
in Namensfelder speichert Notes Namen grundsätzlich in der "kanonischen Form" (also mit den Tags CN, OU, O und C). Du musst also den Inhalt des Feldes (Array) "abklappern" und die Namen mittels der Notes-Klasse "NotesName" konvertieren.
z.B. so:
Dim nn As NotesName
Dim strPersonNames As String
Set item = docParent.GetFirstItem( "Teilnehmer" )
Forall PersonName In item.Values
Set nn = New NotesName( PersonName )
If docProfile.PrintUserNames(0) = "0" Then
strPersonNames = strPersonNames + nn.Common + ", "
Else
strPersonNames = strPersonNames + nn.Abbreviated + ", "
End If
End Forall
strPersonNames = Left$( strPersonNames, Len(strPersonNames)-2 )
Die letzte Zeile entfernt das 1x überzählige ", ".
Der Code passt nicht zu Deinem Beispiel, geht aber in etwa in die gleiche Richtung.
Gruss
Manfred
TMC:
Hi Manfred,
prima, vielen dank!
Damit brauch auch die Implode-Funktion nicht mehr:
Function CN (vNames As Variant) As String
Dim szPersonNames As String
Dim nn As NotesName
Forall PersonName In vNames
Set nn = New NotesName( PersonName )
szPersonNames = szPersonNames + nn.Common + Chr$(10)
End Forall
szPersonNames = Left$( szPersonNames, Len(szPersonNames)-1 ) 'entfernt das letzte überzählige Zeichen
CN = szPersonNames
End Function
Grüße,
TMC
Manfred Dillmann:
Hallo TMC,
freut mich, dass es jetzt funktioniert. :)
Mir ist noch was aufgefallen:
>>Dim szPersonNames As String<<
"sz" steht in der C-Programmierung für string-zero-terminated - also eine Zeichenkette, die mit binär Null terminiert. Ist das bei LotusScript auch tatsächlich so? Ich habe bislang in der Hilfe nie eine konkrete Aussage über die interne String-Verwaltung finden können...
Ist eigentlich nicht weiter wichtig... ist mir nur aufgefallen.
Gruss
Manfred
TMC:
Hi Manfred,
da müsstest Du die Profis fragen.
Hab mich nur an die definierte Notation angeleht damit ich nicht gleich geschimpft werde, habe ja schließlich auch noch kein sauberes Errorhandling in der Function :o ;D)
http://www.atnotes.de/index.php?board=11;action=display;threadid=12267
Das "sz" stammt afaik von der Ungarischen Notation....
TMC
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln