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