Auf einer Seite mit ungespeicherten Änderungen bleiben
Halten Sie den Benutzer auf der Seite, die er gerade bearbeitet, wenn er einen anderen Eintrag der WklNavBar wählt,
statt seine Änderungen zu verlieren oder stillschweigend zu speichern.
Voraussetzungen: WKL Forms Object Library 1.24 oder höher.
Lösungsüberblick
BeforeNavigate läuft, bevor die Leiste ihre Auswahl ändert. Das Setzen von Cancel behält den aktuellen Eintrag bei
und unterdrückt Navigate, sodass die Seite bleibt, wie sie ist. Form.Dirty des Seitenunterformulars gibt an, ob
der angezeigte Datensatz ungespeicherte Änderungen hat.
Umsetzung
Private Sub navMain_BeforeNavigate(ByVal Key As String, Cancel As Integer)
If PageDirty() Then
Select Case MsgBox("Die Änderungen speichern?", vbYesNoCancel + vbQuestion)
Case vbYes: Cancel = Not SavePage()
Case vbNo: Me!sfPage.Form.Undo
Case Else: Cancel = True
End Select
End If
End Sub
Private Sub navMain_Navigate(ByVal Key As String)
Me!sfPage.SourceObject = "Form." & Key
End Sub
' A page showing a table or an unbound form has no unsaved record.
Private Function PageDirty() As Boolean
On Error Resume Next
PageDirty = Me!sfPage.Form.Dirty
End Function
' Saves the page's record; False when Access refused it (validation rule, required field).
Private Function SavePage() As Boolean
On Error Resume Next
Me!sfPage.Form.Dirty = False
SavePage = (Err.Number = 0)
End Function
Hinweise
- Nur die Auswahl durch den Benutzer löst
BeforeNavigateaus (Klick, Eingabetaste, Leertaste, UI Automation). Das Setzen vonSelectedKeyper Code löst nichts aus, sodass Code den Eintrag einer Seite markieren kann, die er selbst geöffnet hat. - Eine an eine Navigationstabelle gebundene Leiste fragt selbst nach, bevor ein Unterformularziel eine Seite mit einem ungespeicherten Datensatz ersetzt, so wie Access beim Schließen eines geänderten Entwurfs (
ConfirmUnsavedChanges, Standardwert True). Der Code oben gilt für eine Leiste, die ihre Seiten inNavigateanzeigt. - Ist die Seite geändert, wird die Auswahl abgebrochen; Seite und Auswahl bleiben. Nach
Undotauscht dieselbe Auswahl die Seite aus.
Verwandte Themen
de/wiki/msaccess/comctl/how-to/stay-on-a-page-with-unsaved-changes.txt · Zuletzt geändert: von Wolfgang van der Stille