Autor Thema: CommonUserName in Array umsetzen  (Gelesen 3653 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
CommonUserName in Array umsetzen
« am: 15.12.03 - 21:39:43 »
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

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
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 858
  • Geschlecht: Männlich
    • www.madicon.de
Re:CommonUserName in Array umsetzen
« Antwort #1 am: 15.12.03 - 22:09:03 »
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

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:CommonUserName in Array umsetzen
« Antwort #2 am: 15.12.03 - 22:31:05 »
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
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 858
  • Geschlecht: Männlich
    • www.madicon.de
Re:CommonUserName in Array umsetzen
« Antwort #3 am: 15.12.03 - 22:44:20 »
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

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:CommonUserName in Array umsetzen
« Antwort #4 am: 15.12.03 - 22:49:25 »
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
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 858
  • Geschlecht: Männlich
    • www.madicon.de
Re:CommonUserName in Array umsetzen
« Antwort #5 am: 15.12.03 - 23:03:30 »
Hallo TMC!

>>Das "sz" stammt afaik von der Ungarischen Notation....<<

Was es nicht alles gibt... ;D

Gruss
Manfred

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:CommonUserName in Array umsetzen
« Antwort #6 am: 15.12.03 - 23:30:28 »
Also, das ist so eine Sache. vermutlich stimmt das, dass das sz das Z von Zero hat, und das mit der ungarischen Notation stimmt auch. A-bär, in C sind alle Strings Nullterminated, das ist also eigentlich eine Tautologie, oder umgekehrt, wenn man sz für Nullterminated Strings setzt, dann gilt umgekehrt, jeder String in C gehört in diese Kategorie.

Richtig, Basic (LotusScript ist ein Dialekt davon) kennt diese Sorte von Strings nicht. Im Gegensatz zu C ist Chr(0) ein gültiges Zeichen innerhalb eines Strings. Baisg arbeitet also mit einem Längeneintrag und bestimmt den String durch seine Länge, nicht durch irgend einen Begrenzer (die Null im C).

Vermutlich ist dadurch - wie der Sprachwissenschaftler sagen würde - eine falsche Analogie entstanden: Da sämtliche Strings in C in die Kategorie sz fallen, verwendet man die Markierung sz eben auch in Basic zum Markieren von Strings (dabei gäbe es auch dort einen sogar vom Interpreter/Compiler interpretiertes Zeichen: $ aber als Suffix, nicht als präfix: String$ )
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz