Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: jo@chim am 14.07.14 - 10:28:51

Titel: Temporäres Doc an Frontend-Dokument gebunden?
Beitrag von: jo@chim am 14.07.14 - 10:28:51
Ich möchte für eine Revisionierung den ursprünglichen Anhang, vor einer evt. Änderung durch den Anwender, behalten:
Also habe in den Declarations einer Maske eine globale Variable definiert
Code
Dim tmpdoc As NotesDocument
Im Postmodechange weise ich ihr das aktuelle Dokument zu, für einen späteren Vergleich
Code
Set tmpdoc= Source.Document
... aber offensichtlich ist das tmpdoc an das Frontend-Dokument gebunden, es verändert sich mit?! Wie kann ich das unterbinden? Oder muss ich in jedem Fall den Anhang temporär als Datei zwischenspeichern?

(Falls ich jetzt irgendwie offensichtliche Grundregeln nicht raffe... verzeiht mir. Leide unter einer schweren Post-WM-Belastungsstörung)
Titel: Re: Temporäres Doc an Frontend-Dokument gebunden?
Beitrag von: Tode am 14.07.14 - 10:39:08
Eine LotusScript- Variable ist immer nur ein "Verweis" auf das "echte" Dokument und kann nicht abgekoppelt werden. Du müsstest Dir eine Kopie des Dokuments im Speicher ablegen (New NotesDocument, per CopyAllItems die Inhalte rüberkopieren), dann könnte das klappen, obwohl natürlich speziell die Sache mit den RichtextItems sehr tricky werden kann...
Titel: Re: Temporäres Doc an Frontend-Dokument gebunden?
Beitrag von: jo@chim am 14.07.14 - 10:42:21
Ja, hatte ich mir schon gedacht (soweit das heute geht), danke, wollte nur sicher gehen, dass der Fehler nicht anderswo liegt - ich werds über ein temporär zwischengespeichertes Dokument, das ich dann wieder lösche, lösen.
Titel: Re: Temporäres Doc an Frontend-Dokument gebunden?
Beitrag von: koehlerbv am 14.07.14 - 10:46:02
Speichern musst das temporäre Dokument aber nicht.
Per UNID bzw. NoteID kannst Du auch eine zweite Instantiierung des Dokumentes vornehmen.

Bernhard
Titel: Re: Temporäres Doc an Frontend-Dokument gebunden?
Beitrag von: jo@chim am 14.07.14 - 15:04:30
Speichern musst das temporäre Dokument aber nicht.
Per UNID bzw. NoteID kannst Du auch eine zweite Instantiierung des Dokumentes vornehmen.

Hi Bernd, wenn ich in einer Funktion das temporäre Dokument erstelle und die UNID zurückgeben lasse
Code
...
Set doc = New NotesDocument (db)	
Call source.document.Copyallitems(doc)
doc.Form="tmpdoc"
DocRevAttachment=doc.Universalid
...
wird zwar eine UNID erstellt, aber beim Versuch, das Dokument an anderer Stelle per db.getDocumentByUnid zu holen, gibts den Fehler "invalid universal id", wenn ich das Dokument nicht speichere. NoteID wird in dem Fall gar nicht erstellt; es wird 0 zurückgegeben. Erst wenn ich speichere, funktionierts...

Oder habe ich etwas falsch verstanden?
Titel: Re: Temporäres Doc an Frontend-Dokument gebunden?
Beitrag von: Tode am 14.07.14 - 15:18:17
Ja, Du hast da was falsch verstanden. Bernhard meinte, das SELBE Dokument über seinen UNID zu holen.

Set doc = Source.Document

und

Set doc = db.GetDocumentByUnid( Source.Document.UniversalID )

liefern tatsächlich zwei Objekte zurück, die voneinander unabhängig sind. Das erste ist die "Repräsentation" des Frontends und ändert sich damit dynamisch mit, das andere die Repräsentation des Backends, das sich nicht mitändert.

Ich würde trotzdem von diesem Vorgehen abraten, denn wenn Du aus versehen das zweite Dokument speicherst, dann produzierst Du jedesmal einen Replizierkonflikt...
Titel: Re: Temporäres Doc an Frontend-Dokument gebunden?
Beitrag von: jo@chim am 14.07.14 - 15:31:44
Danke!