Danke, habe ich jetzt mal versucht. Einfacher geht das nicht? Scheint aber zu funktionieren. Habe jetzt jedoch ein neues Problem. Also ich führe den Code mit dem löschen/erstellen im QueryOpen einer Form aus. Also immer bevor das Dokument geöffnet wird. Wenn ich jetzt etwas editieren will bekomme ich einen Save Conflict, weil das Dokument angeblich auch gespeichert wurde...Hier mal mein Code:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim rtitemA As NotesRichTextItem
Dim rtitemB As NotesRichTextItem
Dim rtitemC As NotesRichTextItem
Set db = session.CurrentDatabase
Set view = db.GetView("Dashboard")
Set doc = view.GetFirstDocument
Set rtitemA = doc.GetFirstItem("field_read")
Call rtitemA.remove
Call doc.CreateRichTextItem("field_read")
Set rtitemB = doc.GetFirstItem("field_read")
Set rtitemC = doc.GetFirstItem("field_edit")
Call rtitemB.AppendRTItem(rtitemC)
Call doc.Save(True, True)
Weil ich das Doc im Back-End bearbeite vielleicht?
Okay danke. Ich habe mir seine Funktion ReOpen kopiert.
Also ich hole mir im PostOpen das (BackEnd) Doc, mache meine Änderungen und rufe danach die Funktion ReOpen auf. Jetzt bekomme ich (wie auch teilweise bei meinen Versuchen) einen Stack Overflow. 10-20 Dokumente öffnen sich und werden sofort wieder geschlossen (Notes schiesst´s dabei manchmal auch ab!). Das ganze passiert jetzt in der Funktion ReOpen in der Zeile
-> Set docThis = uidoc.Document
Das ist die Funktion, die ich aufrufe, nachdem ich im BackEnd doc das RTI gelöscht und neu erstellt habe:
Function ReOpen(docThis As NotesDocument) As Integer
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim dbThis As NotesDatabase
Dim unid As String
ReOpen = 0
Set dbThis = docThis.ParentDatabase
Call docThis.Save(True , True)
unid = docThis.UniversalID
docThis.SaveOptions = "0" ' # ... Speicherabfrage vermeiden
Set uidoc = ws.CurrentDocument
Call uidoc.Close
Set docThis = dbThis.GetDocumentByUNID(unid)
Set uidoc = ws.EditDocument(True , docThis)
---> Set docThis = uidoc.Document
If docThis.HasItem("SaveOptions") Then
' # ... das Feld SaveOptions wieder entfernen...
docThis.RemoveItem("SaveOptions")
Call docThis.Save( True , True )
End If
ReOpen = 1
Print "Das Dokument wurde erneut geöffnet"
End Function