Hallo zusammen,
ich habe ein kleines Problem bei einer Anwendung, in der ich Dokumente mit einer statischen UNID benötige, da diese Dokumente über Verlinkungen aus einer Windowsanwendung aufgerufen werden sollen.
Der Inhalt der Notesdokumente darf zum einen normal geändert werden (z.B. um einen Begriff zu ändern oder einen Dateianhang auszutauschen), muss aber zum anderen auch eine Versionshistorie bieten (z.B. bei umfangreichen Überarbeitungen des Dokuments).
Die Versionierung habe ich über 'Neue Version werden Geschwister' gelöst. Das Geschwisterdokument ist bis zur Freigabe eine Arbeitskopie (
docWork) und soll nach Freigabe dann den bisherigen Inhalt des aktuell gültigen Dokuments (
docMaster) aufnehmen, während der Inhalt der Arbeitkopie dabei in das ursprüngliche Dokument übertragen wird.
Den Austausch der Inhalte möchte ich über eine Schaltfläche im Arbeitsdokument lösen (siehe Code), alledings habe ich dbei folgendes Problem:
1. Enthalten beide Dokumente im RTF 'Anweisung' nur Notesinhalte (Text, Abschnitte, Tabellen) funktioniert der Austausch einwandfrei
2. Enthält
docWork einen in den Text eingebetteten Dateianhang, funktioniert die Übertragung an
docMaster ohne Probleme, der Anhang kann von dort auch geöffnet werden.
3. Enthält docMaster einen Dateianhnag, kommt es beim Speichern von
docWork zu der Fehlermeldung:
'
Notes-Fehler: Ein oder mehrere Anhänge des Quelldokuments fehlen. Starten Sie Fixup, um das Dokument in der Quelldatenbank zu löschen'
Im Debugger sieht es so aus, als würde Notes das eingebettete Objekt (bei meinem Test ein Textfile) immer weiter ineinander verschachteln (siehe Screenshot des Debbugers)
Hat jemand eine Idee, wie ich das Problem lösen kann?
Sub Click(Source As Button)
Dim ses As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim docTemp As NotesDocument
Dim docWork As NotesDocument
Dim docMaster As NotesDocument
Dim itemWork As NotesItem
Dim itemMaster As NotesItem
Dim masterID As Variant
Dim workID As String
Set db = ses.CurrentDatabase
Set uidoc = ws.CurrentDocument
Set docWork = uidoc.Document
Set docTemp = New NotesDocument( db )
workID = docWork.UniversalID
Call docWork.Save(True, False, False)
Call ws.EditDocument(False,docWork)
'Schritt 1: MasterDoc - Anweisung in Temp und Item löschen
masterID = docWork.GetItemValue("$VERREF")
Set docMaster = db.GetDocumentByUNID(masterID(0))
Set itemMaster = docMaster.GetFirstItem( "Anweisung" )
Call itemMaster.CopyItemToDocument( docTemp, "Anweisung" )
Call docMaster.RemoveItem("Anweisung")
'Schritt 2: WorkDoc - Anweisung in Master kopieren
Set itemWork = docWork.GetFirstItem( "Anweisung" )
Call itemWork.CopyItemToDocument( docMaster, "Anweisung" )
Call docMaster.Save(True, False, False)
'Schritt 3: Nachverarbeitung
Call uidoc.Close(True)
Set docWork = db.GetDocumentByUNID(workID)
Call docWork.RemoveItem("Anweisung")
Call docTemp.CopyAllItems( docWork, True )
Call docWork.Save(True, False, False) <-- Hier kommt es zur Fehlermeldung
Call ws.EditDocument(False,docWork)
End Sub
Gruß
Dirk