Autor Thema: Kritisches Verhalten beim Schließen eines Dokuments  (Gelesen 1730 mal)

Jürgen Schomann

  • Gast
Ich habe folgende Maske für Testzwecke:

(Globals) - (Declarations)
   Dim ws As NotesUIWorkspace
   Dim uidoc As NotesUIDocument

Ereignis Postopen bzw. Onload
   Set ws = New NotesUIWorkspace
   Set uidoc = Source

Ereignis Querysave bzw. Onsubmit
   Call Source.Document.ReplaceItemValue("a","a")
   Call ws.CurrentDocument.Document.ReplaceItemValue("b","b")

Die Maske enthält ein Textfeld F1 bearbeitbar mit dem Ereignis Onchange
   Call uidoc.Document.ReplaceItemValue("c","c")
   Call ws.CurrentDocument.Document.ReplaceItemValue("d","d")
   Call ws.CurrentDocument.Refresh

Dann erstelle ich ein neues Dokument oder öffne ein bereits erstelltes Dokument zum Bearbeiten und geben in o. g. Textfeld etwas ein
Der Fokus steht ja währenddessen auf dem zugehörigen Fenster-Tab
Schließe ich nun das Dokument über das Kreuz-Symbol rechts im Fenster-Tab kommt ja die Anfrage ob das Dokument gespeichert werden soll.
Wenn ich dies dann bestätige enthält das Dokument wie erwartet alle o. g. Felder: Feld F1, Feld a, Feld b, Feld c, Feld d..

Wenn ich og. Vorgang für ein anderes Dokument wiederhole und jetzt aber z. B. noch weitere Fenster-Tabs mit einem Dokument aus einer anderen
Datenbank im Bearbeiten geöffnet habe und den Fokus auf diesen Fenster-Tab setzen und dann mit der Maus nur das Kreuz-Symbol des anderen Dokuments
anklicke wechselt der Fokus in diesen Fenster-Tab und o. g. Anfrage zum Speichern kommt. Jetzt entstehen in dem Dokument aber nur das Feld F1, Feld a und Feld c.
Feld b und Feld c entstehen in dem anderen Dokument, von wo ich das ganze ausgelöst habe.

Die Zeilen in og. Ereignissen mit ws.CurrentDocument... beziehen sich auf das aktuelle Dokument und das ist zum Zeitpunkt des Auslösen ja das andere Dokument.
Wenn das auslösende Dokument z. B. nur im Lesemodus offen ist, würde außerdem bei der o. g. Anweisung Call ws.CurrentDocument.Refresh die Meldung 'Dokumentbefehl ist nicht verfügbar.' kommen.

Hier liegt also unbwusst ein kritisches Verhalten vor. Die Anwender benutzen ja oft wie auch allgemein im Betriebssystem das Kreuz-Symbol zum Schließen von Fenstern.
Das ganze ist ja nur ein Beispiel, es könnte ja noch ganz ander Aktionen ablaufen, z. B. löschen von Dokumenten u. a..
Man könnte mit ein Flag zwar verhindern, dass das Kruez-Symbol nicht zum Schließen sondern nur eine Aktion benutzt werden muss. Aber vorher kommt ja schon die Abfrage zum Speichern das Dokuments von Notes.
Also vor dem Querysave und wenn man das Speichern bestätigt ist ja schon alles gelaufen.

Oder gibt es vielleicht andere Möglichkeiten?

Gruß Jürgen

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz