Hallo zusammen,
nachdem ich nun schon einige meiner Notes Fragen mit Hilfe dieses Forums lösen konnte, muss ich jetzt doch mal einen eigenen Thread starten
Ich habe folgende Situation: Ich bin dabei eine Datenbank zu bauen, in der wir Projekte und die dazugehörigen Dokumente ablegen können. Mein Design sieht im Moment so aus, dass ich ein Dokument "Projekt" habe das die Verwaltungsinfos zu einem Projekt enthält. Als Response kann man dazu dann ProjektOrdner und ProjektDokumente anlegen, wobei man an einen Ordner weitere Ordner oder Dokumente anhängen kann.
In einer Embedded View im Dokument "Projek" zeige ich alle zum Projekt gehörigen Ordner und Dokumente als Response-Hierarchy an. Das funktioniert alles soweit ganz gut.
Nun zu meinem Problem bzw. der Frage: Für die "ProjektDokumente" soll in Abhängigkeit eines Flags, das für jedes Projekt gesetzt werden kann, eine Versionierung erfolgen. Ich weiß, dass ich in Notes die Versionierung automatisch einschalten kann. Das Problem dabei ist, dass dann ja Response Dokumente generiert werden. Da ich in meiner Embedded View über @AllDescendants alle von einem Projekt abgeleiteten Dokumente anzeige, würde es mir mit dieser Methode der Versionierung auch die Versionen in dieser Übersicht anzeigen....was ich ja aber aus Gründen der Übersichtlichkeit nicht will.
Ich habe mir nun überlegt, dass ich ein Dokument "ProjektDokumentHistory" anlege, das gleich aussieht, wie "ProjektDokument". Sobald ein ProjektDokument in den EditMode wechselt (und das Flag für Versionierung gesetzt ist), kopiere ich den Inhalt aller Felder des ProjektDokuments in ein temporäres ProjektDokumentHistory (QueryModeChange Event):
(....)
Elseif (source.EditMode = False) Then
Call note.CopyAllItems(note_history, True)
Dim tmpForm As NotesItem
Set tmpForm = note_History.ReplaceItemValue("Form","frmProjectDocumentHistory")
'note_History.Form = "frmProjectDocumentHistory"
Dim tmpDocID As NotesItem
Set tmpDocID = note_History.ReplaceItemValue("frmPD_ParentDocID", ""+note.UniversalID)
Dim tmpUser As NotesItem
Set tmpUser = note_History.ReplaceItemValue("frmPD_CreatedBy", session.UserName)
Dim tmpSaved As NotesItem
Dim tmpNow As String
tmpNow = Now
Set tmpSaved = note_History.ReplaceItemValue("frmPD_CreatedOn", ""+tmpNow)
Dim tmpRef As NotesItem
Set tmpRef = note_History.ReplaceItemValue("$REF","")
Im PostSave Event führe ich dann
Call note_history.Save( True, True )
aus.
Sinn der Sache soll sein, dass die Versionsdokumente nur dann angelegt werden, wenn das Hautdokument auch wirklich gespeichert wird. Soweit funktioniert auch das ganz gut. Lediglich mit Attachments in einem RTF habe ich das Problem, dass wenn ich das Attachment im Hauptdokument ändere Notes eine Fehlermeldung "Notes error: one or more of the source document's attachment are missing. Run Fixup to delete the document in the source database" ausgibt. Diese Meldung kommt beim Save des neuen History Dokuments, wenn ein Attachment geändert wurde. Werden nur normale Felder geändert werden, wird das History Dokument ohne Probleme abgespeichert.
Sorry für den langen Post, ich hoffe die Beschreibung meines Problems ist einigermaßen verständlich. Gibt es eine Möglichkeit, mit der ich das Attachment auch komplett in das temporäre Dokument im Hintergrund kopieren kann?
Oder gibt es für meine Aufgabenstellung eine sinnvollere vielleicht auch einfachere Lösungsmöglichkeit?
Vielen Dank für eure Hilfe.
Viele Grüsse
Martin