Das Notes Forum
Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: der busse am 05.03.20 - 22:34:29
-
Ich stehe gerade etwas auf dem Schlauch.
Ich möchten eine gemeinsame Aktion in eine Ansicht und eine Maske bauen.
Grund ist einfach, daß ich eine Änderung von X Sachen in einem Dokument unterbinden will und eine Sache (Titel) ändern möchte. Der Wert wird immer gesetzt. Die Sache mit der View klappt wie gewünscht.
Wenn ich nun aber das Dokument öffne und im Lesemodus bin, dann klappt die Aktualisierung nicht. Ich habe diverse Sachen probiert und kriege maximal den Eintrag im Titel der Registerlasche / des Tabs aktualisiert. Der Titel, der in einem Feld angezeigt wird bleibt auf dem alten Wert. Schließe ich den Tab und gehe zurück in die Ansicht, steht da auch der alte Wert. Der Eigenschaft AutoReload vor dem Save zu setzen hat da auch nichts gebracht. Hier der etwas abgespeckte Schnipsel.
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument, uidoc2 As NotesUIDocument
Dim uiview As NotesUIView
Dim doc As NotesDocument
Dim OldSubject As String, NewSubject As String
Set db = session.CurrentDatabase
Set uidoc = ws.CurrentDocument
If (uidoc Is Nothing) Then
Set uiview = ws.CurrentView
Set doc = db.GetDocumentByID(uiview.CaretNoteID)
Else
Set doc = uidoc.Document
End If
Call doc.ReplaceItemValue( "X", "some new Value")
Call doc.Save(False, False)
If (uidoc Is Nothing) Then
Call ws.ViewRefresh()
Else
uidoc.Close(True)
Set uidoc2 = ws.EditDocument(False, doc)
uidoc2.Refresh()
End If
End Sub
Hat da jemand Erfahrungen bzw. eine Idee?
Ich muss das Dokument natürlich nicht schließen, war aber als Lösung in der Doku angegeben.
-
Ich würde mir die UniversalID des Dokuments merken, dann das uidoc schließen, doc und uidoc aus dem Speicher löschen (delete), Dokument neu über die UniversalID holen, ändern speichern und neu öffnen
-
Ich würde das uiDoc nicht schließen und neu öffnen sondern in den Bearbeitenmodus wechseln, und das bevor die Änderungen im Backend durchgeführt werden.
-
Hm. Muss ich mal versuchen. In meinem Schöcker steht doch tatsächlich auch was von Delete, wenn sich z.B. zwei Agenten austauschen.
Das mit dem Editiermodus wollte ich eigentlich vermeiden.
Es sind wohl vereinzelt Anhänge beim Editieren von Richtext-Feldern verändert worden, und da wollte ich halt die Möglichkeit der Änderung per Edit-Modus umschiffen. Zumindest schien mir das in dem Moment einfach.
Gibt es sonst eine Dokumentation, wann Sachen vom Dateisystem ins Notes zurück gelesen werden, wenn man solche Felder editiert?
Ich meine, ich kann mir denken, daß das evtl. beim Speichern des Notesdokumentes passiert, oder das Notes vielleicht die PID vom Programm zieht, daß den Anhang bearbeitet und wartet, bis das weg ist und die Datei dann zurück schreibt oder Änderungen am Filesystem protokollieren könnte und die Daten dann schon zurück schreibt... Aber das wäre dann schon sehr speziell.
Danke bis hierhin & schönes Wochenende.
-
Moin,
das Problem ließ sich tatsächlich durch ein Delete beseitigen.
UnID = Doc.UniversalID
uidoc.Close(True)
Delete Doc
Delete UIDoc
Call ws.ViewRefresh()
Set Doc = db.GetDocumentByUNID(UnId)
Set uidoc = ws.EditDocument(False, doc)
Danke.