Domino 9 und frühere Versionen > Entwicklung

CommonUserName in Array umsetzen

(1/2) > >>

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