Autor Thema: Variable zu Array machen für Mailempfänger  (Gelesen 2148 mal)

Offline cg-home

  • Aktives Mitglied
  • ***
  • Beiträge: 172
  • Geschlecht: Männlich
  • atnotes = Retter in der Not
Variable zu Array machen für Mailempfänger
« 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
« Letzte Änderung: 31.03.15 - 13:36:21 von cg-home »
11     Server R11.0.1FP3 - Windows Server 2012R2
700   Clients R11.0.1FP3 - Windows Server 2012R2 über Citrix
Traveler R11 | PowerTools 14 | Ytria | DomNavigator

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Variable zu Array machen für Mailempfänger
« Antwort #1 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

Offline cg-home

  • Aktives Mitglied
  • ***
  • Beiträge: 172
  • Geschlecht: Männlich
  • atnotes = Retter in der Not
Re: Variable zu Array machen für Mailempfänger
« Antwort #2 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
11     Server R11.0.1FP3 - Windows Server 2012R2
700   Clients R11.0.1FP3 - Windows Server 2012R2 über Citrix
Traveler R11 | PowerTools 14 | Ytria | DomNavigator

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz