HCL Notes / Domino / Diverses > Entwicklung
Mehrfachfeld bei sendto funktioniert nicht
arieger:
Hallo,
habe ein Problem beim Verarbeiten einer temporären Variablen mit Mehrfachwerte.
Habe ein geöffnetes Dokument mit einer Schaltfläche zum Senden eines Mails.
Die Mailempfänger hole ich mit:
Z4 = docs.GetItemValue( "SendTo" ) aus eine vorbelegten Konfigdokument
M09 = doc.Rekl_Erfasser(0)
Nun versuche ich dies über die Recipientsfunktion zu versenden:
Dim recipients( 1 To 2 ) As String
recipients( 1 ) = M09
recipients( 2 ) = Z4
Call gdoc.AppendItemValue("SendTo", recipients)
Die M09 Adresse wird versendet, bei der Z4 Mehrfachadresse läuft er auf einen Fehler (Type Mismach)?
Im Debugger zeigt er den Wert Z4 richtig als Mehrfachwert an.
Frage: Wie bringe ich den Sendto dazu , den Mehrfachwert in Z4 zu versenden ?
Vielen Dank für Tips.
pantelis.botsas:
Da Du die Variable recipients als Array von Strings deklarierst, wirst Du dort niemals Mehrfachwerte zuweisen können (type mismatch).
Der einfache Weg: die Variable recipient als Variant deklarieren.
Der aufwändigere Weg: die Empfängerliste mit Array-Methoden zusammenstellen und dann dem Feld zuweisen.
arieger:
--- Zitat von: pantelis.botsas am 24.02.23 - 19:43:25 ---Da Du die Variable recipients als Array von Strings deklarierst, wirst Du dort niemals Mehrfachwerte zuweisen können (type mismatch).
Der einfache Weg: die Variable recipient als Variant deklarieren.
Der aufwändigere Weg: die Empfängerliste mit Array-Methoden zusammenstellen und dann dem Feld zuweisen.
--- Ende Zitat ---
Danke für die Antwort. Stimmt habe ich mehrmals probiert.
Wenn der Variant gesetzt ist, kommt folgende Fehlermeldung: "Arrays of arrays are not supported" ??
'Call gdoc.AppendItemValue("SendTo", recipients) -> da kommt die Fehlermeldung
Wenn die Z4 als SendTo angebe funktioniert und sendet, wobei dann M09 fehlt (Z4 Mehrfachfeld, M09 nur 1 Wert)
Call gdoc.AppendItemValue("SendTo", Z4) -> funktioniert
Call gdoc.Send( False )
pantelis.botsas:
Hmm, ich bin mir gerade nicht sicher, ob ich hier verschaukelt werde, aber vermutlich ist meine Antwort zu ungenau gewesen.
Deshalb hier die Lösung 1:
--- Code: ---Dim sendTo As NotesItem
sendTo = gDoc.getFirstItem("SendTo") ' hole das zu manipulierende Feld
sendTo.AppendToTextList(doc.Rekl_Erfasser(0)) ' füge Wert M09 in das Feld hinzu
sendTo.AppendToTextList(docs.GetItemValue( "SendTo" )) ' füge Wert Z4 in das Feld hinzu
...
--- Ende Code ---
Oder die Lösung 2:
--- Code: ---Dim sendTo As Variant
sendTo = Split("", "") ' erstelle eine leerere Liste mit einem leeren ersten Eintrag
sendTo = ArrayAppend(sendTo, gDoc.getItemValue("SendTo")) ' sichere eventuell vorhandene Einträge aus dem Feld in die zuvor erstellte Liste
sendTo = ArrayAppend(sendTo, doc.Rekl_Erfasser(0)) ' übertrage den Wert M09 in die Liste
sendTo = ArrayAppend(sendTo, docs.GetItemValue( "SendTo" )) ' ergänze die Liste mit den Werten von Z4
sendTo = ArrayUnique(sendTo) ' entferne mögliche Dopplungen aus der Liste
sendTo = FullTrim(sendTo) ' entferne mögliche Leereinträge aus der Liste
Call gDoc.ReplaceItemValue("SendTo", sendTo)
...
--- Ende Code ---
Warum Dein Code nicht funktionieren kann:
Du dimensionierst ein Array (es ist jetzt auch egal ob String oder Variant), und sagst diesem, dass es zwei Einträge haben wird.
--- Code: ---Dim recipients (1 to 2) As String/Variant
--- Ende Code ---
Dann weist Du dem ersten Eintrag einen Textwert zu.
Dem zweiten weist Du ein Array zu.
Somit steht in Deiner Variable recipients:
--- Code: ---(1): Name0
(2): [ Name1, Name2, Name3, ...]
--- Ende Code ---
oder zusammengefasst:
--- Code: ---[ Name0, [Name1, Name2, Name3, ...] ]
--- Ende Code ---
Im Falle eines Strings fällt die Zuweisung an der zweiten Stelle auf die Nase.
Im Falle eines Variants kann die Zuweisung zum Feld im Dokument nicht funktionieren, weil Du ein Array von Arrays (siehe Fehlermeldung) zuordnen möchtest. Die Methode AppendItemValue jedoch maximal ein Array verarbeiten kann.
arieger:
... und genau da bei dem Mehrfachwert kommt dann die Array-Fehlermeldung.
Vielleicht liegt es daran dass ich diesen Wert aus dem KonfigDok hole und nicht vom UI - egal.
Sende nun 2 mal dann gehts auch raus.
Trotzdem Danke.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln