Autor Thema: UIDocument zeigt Änderungen nach Speichern (und erneutem Öffnen) nicht an  (Gelesen 2444 mal)

Offline der busse

  • Frischling
  • *
  • Beiträge: 43
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.
« Letzte Änderung: 24.03.20 - 14:27:03 von der busse »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
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

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
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. 
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline der busse

  • Frischling
  • *
  • Beiträge: 43
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.

Offline der busse

  • Frischling
  • *
  • Beiträge: 43
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.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz