Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: mweitzel am 11.05.15 - 09:38:44

Titel: Umsetzung eines Feldes in Vornamen und Nachnamen
Beitrag von: mweitzel am 11.05.15 - 09:38:44
Hallo,

mit folgendem Scriptteil lese ich aus dem Feld "from" den Inhalt aus und stelle diesen in das Feld edv_auftraggeber.

Leider kommt der Inhalt aber in dem Format "CN=Vorname Nachname/O=NotesDomäne" im Feld edv_auftraggeber an.
Kann mir jemand helfen das Script zu ergänzen, dass nur "Vorname Nachname" im Fled edv_auftraggeber ankommt?

         Set Item = New NotesItem (docTicket, "edv_auftraggeber", "" )
         Call Item.Appendtotextlist (docMail.GetFirstItem( "from" )) ' Get Mail From
         Call docTicket.Save (True, True )

Im zweitn würde ich gerne auf gleichem Weg ein Datumsfeld übertragen. Leider läßt mir der Befehl appentotextlist das nicht zu, sondern erwartet wie der Name schon sagt text.
Vorab schon vielen Dank für die Unterstützung
Titel: Re: Umsetzung eines Feldes in Vornamen und Nachnamen
Beitrag von: Driri am 11.05.15 - 10:11:39
zum ersten Problem:

Entweder erzeugst Du ein NotesName-Objekt mit dem Wert aus "From" und kannst dann darüber auf den CN zugreifen oder Du arbeitest mit @Name und Evaluate.

Falls das ein simples Textfeld ohne Mehrfachwerte ist, würde ich übrigens nicht mit Item und AppendToTextList arbeiten, sondern mit einem einfachen Call doc.ReplaceItemValue(...).


zum zweiten Problem:

Auch hier würde ich mit ReplaceItemValue arbeiten, siehe dazu auch die Designer-Hilfe. Wenn Du einen Datumswert übergibst, bekommt das Item auch den entsprechenden Typ.
Titel: Re: Umsetzung eines Feldes in Vornamen und Nachnamen
Beitrag von: mweitzel am 11.05.15 - 10:47:06
Danke für den Hinweis mit dem Replaceitemvalue-Befehl.
Folgenden Befehl nimmt er mir auch an.

Call docticket.Replaceitemvalue("edv_auftraggeber", docMail.GetFirstItem( "from" ))

Möchte ich dort aber dann die Namensumsetzung mit einbauen, meckert er die Syntax an. Noch ne Idee?

Call docticket.Replaceitemvalue("edv_auftraggeber", Evaluate(@Name([CN];(docMail.GetFirstItem( "from" )))))
Titel: Re: Umsetzung eines Feldes in Vornamen und Nachnamen
Beitrag von: Mitch am 11.05.15 - 11:31:01
Evaluate erwartet ein Makro als String. Zum Beispiel {@Name([CN]; "Peter Mueller/Company")}. Das müsstest du dir in deinem Fall zusammen bauen, also so dass der Inhalt des from-Items anstatt "Peter Mueller/Company" drin steht.
Titel: Re: Umsetzung eines Feldes in Vornamen und Nachnamen
Beitrag von: DerAndre am 11.05.15 - 11:32:08
Es Fehlen eigentlich die Anführungszeichen beim Evaluate.

Mach das lieber in eine Stringvariable und nimm anstatt " ein | am Anfang und am Ende.
Das erspart die die Hampelei mit den "

Was willst Du denn mit den Feldern machen?
Titel: Re: Umsetzung eines Feldes in Vornamen und Nachnamen
Beitrag von: Driri am 11.05.15 - 11:35:38
Ich kann nur dringend die Designer-Hilfe empfehlen, da steht das für die meisten Themen sehr gut beschrieben und inkl. Beispiele.
Titel: Re: Umsetzung eines Feldes in Vornamen und Nachnamen
Beitrag von: mweitzel am 11.05.15 - 15:37:18
Hallo,
so weit bin ich aktuell gekommen.
Es erscheinen auch bei der Abarbeitung keine Fehler. Leider ist das Feld edv_auftraggeber aber nicht gefüllt. Sieht jemand den Fehler?

                                             Dim tmpvar As NotesName
         Dim tmpvar1 As Variant
         
         Set tmpvar = New NotesName(docmail.getitemvalue("from")(0))
         tmpvar1 = Evaluate("@Name([CN];tmpvar)")
         Call docticket.Replaceitemvalue("edv_auftraggeber", tmpvar1(0))
Titel: Re: Umsetzung eines Feldes in Vornamen und Nachnamen
Beitrag von: Tode am 11.05.15 - 15:45:44
Ein Evaluate läuft immer auf ein Dokument, wenn kein Dokument gegeben ist, helfen Dir auch Variablen nicht. So ist es richtig:
Code
Dim tmpvar1 As Variant
tmpvar1 = Evaluate("@Name([CN];from)", docmail)
Call docticket.Replaceitemvalue("edv_auftraggeber", tmpvar1(0))
Titel: Re: Umsetzung eines Feldes in Vornamen und Nachnamen
Beitrag von: Mitch am 11.05.15 - 15:46:11
Häh? Jetzt mischst du beide Ansätze. Wieso mit NotesName UND @Name?  ;D

Entweder mit NotesName über die "Common"-Property:
Code
varFrom = docMail.From(0)
Set namFrom = New NotesName(varFrom)
Call docTicket.ReplaceItemValue("edv_auftraggeber", namFrom.Common)

... oder über ein Evaluate, aber da musst du den Inhalt der Variablen richtig reinstecken:
Code
varFrom = docMail.From(0)
eval = Evaluate({@Name([CN]; "} & varFrom & {"})
Call docTicket.ReplaceItemValue("edv_auftraggeber", eval(0))
Edit: Nee, lieber was Tode schrieb ;)
Titel: Re: Umsetzung eines Feldes in Vornamen und Nachnamen
Beitrag von: mweitzel am 12.05.15 - 07:08:38
 :D Ich danke euch allen für die Unterstützung. Die Lösung von Tode funktioniert perfekt.