Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: CLP-Alex am 25.06.08 - 13:51:07

Titel: RenderToRTItem aus anderer DB
Beitrag von: CLP-Alex am 25.06.08 - 13:51:07
Hy zusammen,

ich habe einen Backendagent der über database -> view mir ein doc aus einer anderen DB holt.
Kann ich dieses doc nicht mit RenderToRTItem in ein doc der aktuellen DB packen?

Oder gibt es da eine andere Möglichkeit?

Gruß und Danke

Alex
Titel: Re: RenderToRTItem aus anderer DB
Beitrag von: klaussal am 25.06.08 - 14:03:57
Warum sollte das nicht gehen ?
Titel: Re: RenderToRTItem aus anderer DB
Beitrag von: CLP-Alex am 25.06.08 - 14:18:59
agent bricht mit "Entry not found in index (4000)" ab. hier mal der code

tmpdoc und archivdoc werden oben gesetzt und sind auch vorhanden

Code
'--------------------------- screenshot ---------------------------
	On Error Goto testerror
	Msgbox "vorher"
	Call archivdoc.Save(True,False)	
	Set arch_rtitem = archivdoc.GetFirstItem( "arch_disp" )
	If arch_rtitem Is Nothing Then
		Set arch_rtitem = archivdoc.CreateRichTextItem( "arch_disp" )
	End If
	Msgbox "item erstellt"
	Call tmpDoc.RenderToRTItem( arch_rtitem )
	Call archivdoc.Save(True,False)	
	Msgbox "nachher"
testerror:
	Msgbox ("Fehler in equest-Base (Archiv) " & Error & " (" & Err &  ") in Zeile: " & Erl)
	Exit Function
Titel: Re: RenderToRTItem aus anderer DB
Beitrag von: klaussal am 25.06.08 - 14:28:22
Ich würde mal das Beispiel aus der Hilfe ansehen.
Das habe ich schon oft benutzt und das funzt auch.

Zitat
Call tmpDoc.RenderToRTItem( arch_rtitem )
... Habe ich so in dieser Form noch nie gesehen (was aber nix heissen will).
Titel: Re: RenderToRTItem aus anderer DB
Beitrag von: CLP-Alex am 25.06.08 - 14:59:42
Beispiel aus der Hilfe klappt auch nicht.
Kann mir nur vorstellen das er meine Maske nicht findet???

Call tmpDoc.RenderToRTItem( arch_rtitem )
ist doch das gleiche wie
success = docA.RenderToRTItem( rtitem )
nur die Variablenamen sind anders.

Gruß Alex
Titel: Re: RenderToRTItem aus anderer DB
Beitrag von: klaussal am 25.06.08 - 15:03:24
Zitat
tmpdoc und archivdoc werden oben gesetzt und sind auch vorhanden

Zitat
Kann mir nur vorstellen das er meine Maske nicht findet???

Das widerspricht sich jetzt aber.
Titel: Re: RenderToRTItem aus anderer DB
Beitrag von: m3 am 25.06.08 - 15:06:02
1) Ich würde anstelle des "Call tmpDoc.RenderToRTItem" auf jeden Fall die Version mit dem Rückgabewert nehemn und den Rückgabewert auch auswerten.

2) Der Satz "If the target rich text item is in a new document, you must save the document before calling RenderToRTItem." in der Designer-Hilfe ist Dir schon aufgefallen? Ich vermute mal, dass es daran liegt. Erst archivdoc speichern, dann RenderToRTItem.
Titel: Re: RenderToRTItem aus anderer DB
Beitrag von: CLP-Alex am 25.06.08 - 15:10:45
Weshalb denn.

tmpdoc wird im per agent (in DB A) aus DB B geholt -> ist laut debugger vorhanden
archivdoc wird vorher in DB C neu erstellt und gespeichert -> ist laut debugger vorhanden

tmpdoc.form ist auch gesetzt. ich meinte nur das die Maske aus DB B nicht gefunden/gezogen wird
es sind auch Teilmasken enthalten.

ein Dokument sind ja nur Felder und Werte ohne Maske

Gruß Alex
Titel: Re: RenderToRTItem aus anderer DB
Beitrag von: CLP-Alex am 25.06.08 - 15:13:10

2) Der Satz "If the target rich text item is in a new document, you must save the document before calling RenderToRTItem." in der Designer-Hilfe ist Dir schon aufgefallen?

schau dir mein script im 3. post mal an ;-)
Titel: Re: RenderToRTItem aus anderer DB
Beitrag von: m3 am 25.06.08 - 15:18:13
Ja, Deinen Code habe ich gesehen. Deswegen ist mir ja die Diskrepanz zur Designer-Hilfe aufgefallen.

Du schreibst:
Code
	Set arch_rtitem = archivdoc.GetFirstItem( "arch_disp" )
	If arch_rtitem Is Nothing Then
		Set arch_rtitem = archivdoc.CreateRichTextItem( "arch_disp" )
	End If
	Call tmpDoc.RenderToRTItem( arch_rtitem )
	Call archivdoc.Save(True,False)	
Falls die IF-Bedingung greift, ist "archivdoc" mit dem neuen RTItem "arch_rtitem" nicht gespeichert, bevor RendertToRTItem aufgerufen wird => "If the target rich text item is in a new document, you must save the document before calling RenderToRTItem."

Das RTItem muss/sollte IMMER zuerst gespeichert werden, bevor man mit LotusScript Methoden was hineinschreibt.
Titel: Re: RenderToRTItem aus anderer DB
Beitrag von: CLP-Alex am 25.06.08 - 15:30:53
Ich glaube es ist Zeit für den Feierabend.

Problem ist gelöst, die Form wird vorher geändert  :o

achja, die If arch_rtitem Is Nothing Then.... war nur mal zum testen gedacht

Danke und Gruß
Alex