Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: flaite am 13.08.07 - 16:19:58

Titel: mehrere NotesDokumente per doc.RenderToRichTextItem in ein RTItem schreiben
Beitrag von: flaite am 13.08.07 - 16:19:58
Hi,

das im Betreff angegebene funktioniert nicht.
Gibts da irgendeinen Trick?

Code

	For i = 0 To Ubound(globArrDocGraph)
		Print "add Document to email: " & globArrDocGraph(i).UniversalID
		Call objEmail.addRenderedDocToRTItem(globArrDocGraph(i), "BodyProcess")
	Next

In der Klasse des Objekts objEmail steht sowas:
Code
'###########################################################################################################		
'/**
' * add rendered Document to the RichTextField
' *
' * @param the notes document to be copied in the RichTextItem
'* @param the name of the RichTextItem
' * @depends (based on)
' * @return indicates success or failure of operation	
' * <br><code>@calls:</code> LSLibErrorHandling - handleError
' * <br><code>@calls:</code> 
' * <br><code>@calledby:</code> 
' * @version 1.0 build 15.08.2007
' * @author Axel Janssen
' */	
	Public Function addRenderedDocToRTItem(doc As NotesDocument, strNameRTItem As String) As Integer
		'ErrorHandling
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
		Const constrErrorLocation = "(LsClassSpiMailMergeEMail) - addRenderedDocToRTItem()"	
		On Error Goto ErrorHandler
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
		Dim rtItem As NotesRichTextItem	
		Set rtItem = New NotesRichTextItem(i_docEMail, strNameRtItem)
		
		'doc.Save True, False
		i_docEMail.save True, False
		addRenderedDocToRTItem = doc.RenderToRTItem(rtItem)
		
Ende: 
		Exit Function
		
		'--------------------------------------- Error handling -------------------------------------------------
ErrorHandler:
		Call objPublicErrorHandler.handleError ( Err, Error, Erl, constrErrorLocation, getMsgText(12))
		addRenderedDocToRTItem = False
		Resume Ende	
		
	End Function
	

Auch wenn ich das Dokument, in der das Dokument an das RichTextItem angehängt werden soll, vor der Operation abspeichere, tut er da immer nur das letzte Dokument des Arrays rein.

Irgendwelche Ideen?

Gruß Axel
Titel: Re: mehrere NotesDokumente per doc.RenderToRichTextItem in ein RTItem schreiben
Beitrag von: jBubbleBoy am 13.08.07 - 17:03:31
mach doch mal hinter:
addRenderedDocToRTItem = doc.RenderToRTItem(rtItem)
ein
rtItem.saveToDisk = true

bubble
Titel: Re: mehrere NotesDokumente per doc.RenderToRichTextItem in ein RTItem schreiben
Beitrag von: jBubbleBoy am 13.08.07 - 17:11:21
Ähhh ich sehe gerade Du machst immer ein
Set rtItem = New NotesRichTextItem(i_docEMail, strNameRtItem)
das geht so natürlich nicht. mach getFirstItem, wenn es noch nicht existiert.

ich war blind, sorry
bubble
Titel: Re: mehrere NotesDokumente per doc.RenderToRichTextItem in ein RTItem schreiben
Beitrag von: flaite am 13.08.07 - 18:15:33
Hm. Richtig logisch find ich es nicht. Schliesslich ist das eine Objekt-Repräsentanz des RichTextItem und nicht das wirkliche Ding.
Nur weil ich ein neues Objekt davon bilde, soll er doch nicht das bestehende Feld leeren ???
Wenn ich mit
Code

i_docMail.getFirstItem(strName) 
findet er es nicht. D.h. die Variable, die den Rückgabewert der Methode hält, bleibt leer.
Versuch noch ein paar Alternativen.

Gruß Axel
Titel: Re: mehrere NotesDokumente per doc.RenderToRichTextItem in ein RTItem schreiben
Beitrag von: flaite am 13.08.07 - 18:25:48
Danke für die tolle Unterstützung.

So geht es:

Code

Public Function addRenderedDocToRTItem(doc As NotesDocument, strNameRTItem As String, firstCall As Integer) As Integer
   		'ErrorHandling

' -- stuff
		Dim rtItem As NotesRichTextItem	
		Stop
		If firstCall Then
			Set rtItem = New NotesRichTextItem(i_docEMail, strNameRtItem)
		Else
			Set rtItem = i_docEMail.getFirstItem(strNameRtItem)
		End If

' - other stuff

Im ersten Aufruf muss das RichTextItem-Objekt über NEW geholt werden.
In allen folgenden Aufrufen  dann über doc.GetFirstItem(strNameItem).

Ganz einsehen tue ich das nach wie vor nicht. 
Ich glaub, ich muss meinen 2-jährlichen Thread auf Ben Langhinrich zu RichText starten...
Werd hier den Link anhängen, hab aber zur Zeit eine Menge Arbeit.

Gruß Axel 
Titel: Re: mehrere NotesDokumente per doc.RenderToRichTextItem in ein RTItem schreiben
Beitrag von: jBubbleBoy am 13.08.07 - 19:48:56
ja das ist schon komisch, aber z.B. ein
Code
For a = 0 To 9
     Set it = New NotesItem(doc, "meinFeldname", a)
Next
erzeugt 10 gleichnamige Felder.

bubble
PS: es gibt auch die Funktion doc.getNextItem(item)  ;)