Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: cg-home am 31.03.15 - 12:05:12

Titel: Variable zu Array machen für Mailempfänger
Beitrag von: cg-home am 31.03.15 - 12:05:12
Hallo Entwickler,

ich hänge gerade bei vermutlich einer Anfänger frage, die mich schon öfter
aufgehalten hat und ich noch keine gute Lösung habe.
Es funktioniert derzeit aber ich glaube dass es miserable gelöst ist.

Für den Hintergrund.
Ich habe ein Hauptdokument und dazu ein oder mehrere Antwortdokumente.
Wenn das Hauptdokument abgeschlossen wird, soll nun an die Bearbeiter
der Antwortdokumente eine Mail gesendet werden.
Da ich eh die Antworten prüfe, ob sie auch abgeschlossen sind,
lasse ich hier gleich eine Variable mit laufen in der ich die Namen speichere.
Die Variable habe ich als Variant deklariert und wollte es mit ArrayAppend
hinzufügen. Das geht aber nicht, da es kein Array ist, wenn der erste Name
eingetragen wurde. Und über ReDIM wird der erste Wert wieder entfernt.
Jetzt merke ich mir den Wert über eine DummyVariable aber das kann es
ja auch nicht sein.

Hier ein Auszug aus dem Code:

Code
…..
Dim vCopyTo As Variant
Dim vCopyToDummy As String
….	

Do Until (docdc Is Nothing) 
……
……
		If IsArray(vCopyTo) Then
 			vCopyTo = ArrayUnique(ArrayAppend(vCopyTo,docDC.kvpSN_Name(0)))
		Else
 			If Not vCopyTo = "" Then				‘Wenn vCopyTo gefüllt und kein Array zu Array machen
				 vCopyToDummy = vCopyTo
 				ReDim vCopyTo(0)
 				vCopyTo(0) = vCopyToDummy 
 				vCopyTo = ArrayUnique(ArrayAppend(vCopyTo,docDC.kvpSN_Name(0)))	'???
			 Else
 				vCopyTo = docDC.kvpSN_Name(0)		'Wenn vCopyTo leer ist mit Namen füllen
			End If		'If Not vCopyTo = "" Then
		End If		'If IsArray(vCopyTo) Then
		 		
		Set docdc = dc.GetNextDocument(docdc)
Loop		'Do Until (docdc Is Nothing)
…
…
Call SendMail(doc.NotesName, vCopyTo, vMailSubject, vMailText, "VV")

Wäre Klasse wenn Ihr mir hier einen Tipp geben könntet.

Gruß Christian
Titel: Re: Variable zu Array machen für Mailempfänger
Beitrag von: koehlerbv am 31.03.15 - 12:10:06
Ein Redim Preserve zersört Dir das bestehende (dynamische) Array nicht.

Der primitive Weg, aber wirksam: Verbinde Deine Treffen mit einem besonderen Zeichen (strName & ~~" & strName & "~~" & strName) und bringe das mit Split am Ende in ein Array.

HTH,
Bernhard
Titel: Re: Variable zu Array machen für Mailempfänger
Beitrag von: cg-home am 31.03.15 - 13:35:13
Hi Bernhard,

"~~" habe ich schon so oft genutzt, es aber hier anzuwenden, darauf bin ich nicht gekommen.

Code
…..
Dim vCopyTo As Variant
….	

Do Until (docdc Is Nothing) 
……
……
		vCopyTo = vCopyTo & "~~" & docDC.kvpSN_Name(0)
		 		
		Set docdc = dc.GetNextDocument(docdc)
Loop		'Do Until (docdc Is Nothing)
…
vCopyTo = Split(vCopyTo,"~~")
…
Call SendMail(doc.NotesName, vCopyTo, vMailSubject, vMailText, "VV")


So klappt es, das Leben könnte so einfach sein ;-)
- Danke Dir Bernhard!

Gruß Christian