Hm.. Da ich bei der Nutzung des QueryClode einen Fehler erhalte (soll hier aber erstmal egal sein) und den Beitrag von Bernhard verstehen möchte, habe ich die Historisierung mal ins QuerySave eingebaut um den Code zusammenzuhalten.
Wenn ich im QuerySave das Notesdocument in NotesUiDocument.document verändere schreibst du ja, dass die Änderungen erst wieder ins notesuidocument übernommen werden, wenn es per reopen dazu manuell bewegt wird.
Trifft das für alle Backendänderungen zu? Kann ich also das NotesDocument nach Lust und Laune ändern, danach das NotesUiDocument.Reload und die Änderungen im Backend werden durch das Speichern übernommen? Wohl gemerkt: Ich befinde mich im QuerySave...
Dieses Stück Code funktioniert so nämlich nicht:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
'Historisierung
Dim doc As NotesDocument
Dim rtianm As Variant
Set doc = source.document
Set rtianm = doc.GetFirstItem ("Anmerkung")
If Not rtianm Is Nothing Then
'Historisierung durchführen
Dim session As New Notessession
Dim rtihis As NotesRichTextItem
Dim rtstyle As NotesRichTextStyle
Dim rtnav As NotesRichTextNavigator
Dim leer As Variant
'Historiefeld initialisieren
Set rtihis = doc.GetFirstItem("Historie")
If rtihis Is Nothing Then
Set rtihis = New NotesRichTextItem (doc, "Historie")
End If
'Einfügeoperator an den Beginn des Historie-Items setzen.
Set rtnav = rtihis.CreateNavigator
If rtnav.FindFirstElement(3) Then
leer = False
Else
leer = True
End If
If Not leer Then Call rtihis.BeginInsert(rtnav)
'Content einfügen
Set rtstyle = session.CreateRichTextStyle
rtstyle.fontsize = 8
rtstyle.Bold = True
Call rtihis.AppendStyle(rtstyle)
Call rtihis.AppendText (Now() & " - " & session.CommonUserName)
Call rtihis.AddNewLine (1)
Call rtihis.AppendRTItem(rtianm)
Call rtihis.AddNewline (2)
'Abschlussarbeiten
If Not leer Then Call rtihis.EndInsert()
Call doc.RemoveItem("Anmerkung")
'[1] Speichern ?!?
End If
Call source.Reload
'[2] Im Debugger alles OK.
Call source.Close
End Sub
An der Stelle [2] ist im Debugger im document des source Objektes das Anmerkung Feld wie gewünscht entfernt und in der Historisierung ein neuer Abschnitt eingefügt. Alles bestens. Nach dem Querysave werden keine Routinen im Debugger mehr durchlaufen in denen Code enthalten ist. Wenn ich das Dokument anschliessend öffne, steht der Text immernoch im Feld "Anmerkung" und in der Historie ist nix enthalten
Liegt das daran, dass ich das Dokument vorher [1] sichern muss? Bringt jedoch nichts. Oder ist source.reload kein angesprochenes reopen?
Bin auf eure Rückmeldung gespannt,
Mirko