Ich hoffe ich hab´s richtig verstanden und schlage dir hier jetzt keinen Misst vor.
- Du hast das Parent in Bearbeitung
- öffnest das Child
- Bearbeitst das Child
- Speicherst das Child und aktualisiers gleichzeitig das Parent
- Schließt das Child
- Das Parent sollte aktualisiert sein
Beim Öffnen des Childs holst du die in Initialize das aktuelle NotesUIDocument in eine, in der Maske des Childs, global deklarierte Objektvariable.
Beim Speichern des Childs kannst du das Parent (das eigentlich gerade geöffnet ist) im Backend als NotesDocument-Objekt ermitteln und mit dem NotesDocument-Objekt der globalen Objektvariable vergleichen und so ggf. aktualisieren.
Globals (Maske des Childs):
Public uidoc_parent As NotesUIDocument
Sub Initialize
Dim uiws As New NotesUIWorkspace
Set uidoc_parent = uiws.CurrentDocument
End Sub
Postsave (Maske des Childs)
Sub Postsave(Source As Notesuidocument)
Dim db As NotesDatabase ' current database
Dim doc_parent As NotesDocument ' parent document of the current document
Dim s As New NotesSession ' current session
' get the parent document
Set db = s.CurrentDatabase
Set doc_parent = db.GetDocumentByUNID(Source.Document.ParentDocumentUNID)
' refresh parent if is currently open
If doc_parent.UniversalID = uidoc_parent.Document.UniversalID Then
Call uidoc_parent.Refresh
End If
End Sub
Hi,
funktioniert super. Das ist genau das, was ich gebraucht habe. Ich stand vor dem gleichen Problem.
Ich habe deinen Code noch erweitert, denn wenn das Parent-Dok. nicht im Bearbeiten-Modus ist, was bei mir vorkommen kann, gibt's einen Fehler (Dokumentbefehl kann nicht ausgeführt werden). Ich prüfe, ob das Dokument im Edit-Modus ist. Wenn ja, wird Refresh direkt ausgeführt, wenn nein, dann wird das Dokument in den Edit-Modus gesetzt, refresht und gespeichert. Dann wird das Dok. wieder in den Lese-Modus gesetzt.
...
' refresh parent if is currently open
If doc_parent.UniversalID = uidoc_parent.Document.UniversalID Then
If uidoc_parent.EditMode Then
Call uidoc_parent.Refresh
Else
uidoc_parent.EditMode = True
Call uidoc_parent.Refresh
Call uidoc_parent.Save
uidoc_parent.EditMode = False
End If 'If bolEditMode Then
End If
...
Wäre es eigentlich wert als Ergänzug in den BP-Artikel Das Arbeiten mit Haupt- und Antwort-Dokumenten (http://www.atnotes.de/index.php?topic=13984.0) aufgenommen zu werden. Ich stell's mal zur Diskussion.
Axel