Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: sja am 20.08.04 - 14:45:02
-
Hallo,
folgendes Problem: hier unten ist Ausschnitt aus einer Script, wo soll eine Mail aus einem Frontend-Dokument uiDocA in einem Mail-Datenbank erstellt werden (Backend) und an Eingeladenen versendet werden.
Die Eingeladenen sind in einem Feld "SendTo" (NamensFeld, Mehrfachwerte zu lassen) in uiDocA gespeichert
Wenn da ist nur eine Mailadresse gespeichert, dann kein Problem, wenn mehrere, dann kommt Fehlermeldung "Mail kann nicht gesendet werden, keine Entsprechung in Adressbüchern gefunden". Ich habe versucht die var. Einladung als dynamische array zu definieren
Dim Einladung() As String
Einladung = uiDocA.FieldGetText("SendTo")(0)
und bekomme die Fehlermeldung: "Illegal reference to array or list: Einladung". Ich bin mit array nicht besonders vertraut.
Ich habe die Anträge in Forum schon durchgegangen, aber für meinen konkreten Fall habe nicht gefunden oder übersehen.
Vielen Dank im Voraus für jede Hilfe
Sub Click(Source As Button)
Dim ws As NotesUIWorkspace
Dim db As NotesDatabase
Dim uidb As NotesDatabase
Dim uiDocA As NotesUIDocument
Dim docM As NotesDocument
Dim tmpSRV As String
Dim tmpMAIL As String
Dim Einladung As Variant
Set ws = New NotesUIWorkspace
Set uiDocA = ws.CurrentDocument
tmpSRV = uiDocA.FieldGetText("srv_1")
tmpMAIL = uiDocA.FieldGetText("MailDatei")
Einladung = uiDocA.FieldGetText("SendTo")
Set db = New NotesDatabase( tmpSRV, tmpMAIL )
Set docM = db.CreateDocument
Set item = docM.GetFirstItem( "SendTo")
Call docM.ComputeWithForm( False, False )
If (Einladung <> "") Then
Call docM.Send( False, Einladung )
End If
Call docM.Save( True, True )
End Sub
Gruessen
Sofia
-
Ändere die Zeile
Einladung = uiDocA.FieldGetText("SendTo")
um in
Einladung = uiDocA.Document.SendTo
Im folgenden musst Du aber auch anstelle von Einlad auch Einladung verwenden!
Also:
If (Einladung <> "") Then
Call docM.Send( False, Einlad )
End If
Andreas
-
Hallo Andreas,
vielen Dank für so schnelle Hilfe. Du bist immer so nett.
Habe das aufprobiert und bekam die Fehlermeldung "Type mismatch".
Gruessen
Sofia
-
dann habe ich so ausprobiert
Einladung = uiDocA.Document.SendTo(0)
und die Mail wurde nur an ersten in der Liste gesendet
wenn so:
Einladung = uiDocA.Document.SendTo()
dann kommt die Meldung "Wrong number of array subscripts"
-
Versuch es mal so:
Einladung = uiDocA.Document.SendTo
Ohne Klammer
-
Hallo Batped,
das hat schon Andreas emfohlen und ich habe ausprobiert (s. oben).
In diesem Fall bekomme ich die meldung "Type mismatch".
Sofia
-
"Type mismatch" darf eigentlich nicht sein. Schalte bitte mal den Debugger an und sieh nach, in welcher Zeile der Fehler ist.
Andreas
-
der Fehler kommt in der Zeile
If (Einladung <> "") Then
aber ich weiss nicht was soll da anderes sein.
-
Klaro, das geht nicht, es ist ja ein Array.
Also so:
If IsArray(Einladung) Then
if Einladung(0) <> "" then
Call docM.Send( False, Einladung )
End If
End If
Andreas
-
mmh, das scheint tatsächlich nicht ganz so einfach zu sein.
In anderen Foren wurde folgendes vorgeschlagen:
entweder eine Schleife um die ganzen Values im SendTo zu erhalten und einzeln rauszujagen:
Forall mailname In document.getfirstitem("SendTo").values
Call doc.Send( True, mailname )
End Forall
End If
oder
sendto$ = uidoc.FieldGetText("SendTo")
If Not(Isarray(sendto$)) Then
doc.SendTo = Evaluate(|@Trim(@Explode('| & sendto$ & |';','))|, doc)
Else
doc.SendTo = sendto$
End If
Versuchs mal damit...
-
@Andreas,
genau das habe ich auch gerade ausprobiert und das hat geklappt!!! :)
Vielen Dank @Andreas, @Batped für eure Hilfe.
Gruessen
Sofia