Jak monitować użytkownika o zapisanie zmian w rekordzie w formularzu w programie Access

Oryginalny numer KB: 197103

Porada

Wymaga podstawowych umiejętności w zakresie makr, kodowania i współdziałania.

Podsumowanie

Po przejściu do następnego rekordu w formularzu lub zamknięciu formularza program Microsoft Access automatycznie zapisuje wszelkie zmiany wprowadzone w bieżącym rekordzie. W tym artykule pokazano, jak użyć procedury zdarzeń BeforeUpdate, aby wyświetlić monit o zweryfikowanie operacji zapisywania przed kontynuowaniem programu Microsoft Access.

Firma Microsoft podaje przykłady programowania tylko dla celów ilustracyjnych, nie udzielając żadnej rękojmi, wyrażonej wprost ani dorozumianej, w tym także, ale nie tylko, dorozumianej rękojmi co do przydatności handlowej lub do określonych celów. W tym artykule zakłada się, że czytelnik zna demonstrowany język programowania oraz narzędzia używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać żadnych funkcji i konstruować nowych procedur w celu dostosowania ich do określonych potrzeb użytkownika.

Więcej informacji

Uwaga

Jeśli wykonaj kroki opisane w tym przykładzie, zmodyfikujesz przykładową bazę danych Northwind.mdb. Możesz utworzyć kopię zapasową pliku Northwind.mdb i wykonać te kroki na kopii bazy danych.

W tym przykładzie użyto procedury zdarzenia BeforeUpdate w formularzu Klienci, aby monitować użytkownika o potwierdzenie zmian, zanim program Microsoft Access zapisze rekord:

  1. Otwórz przykładową bazę danych Northwind.mdb i otwórz formularz Klienci w widoku Projekt.

  2. Ustaw właściwość formularza BeforeUpdate na następującą procedurę zdarzenia:

    Private Sub Form_BeforeUpdate(Cancel As Integer)
    
     ' This procedure checks to see if the data on the form has
     ' changed. If the data has changed, the procedure prompts the
     ' user to continue with the save operation or to cancel it. Then
     ' the action that triggered the BeforeUpdate event is completed.
    
     Dim ctl As Control
    
     On Error GoTo Err_BeforeUpdate
    
     ' The Dirty property is True if the record has been changed.
     If Me.Dirty Then
       ' Prompt to confirm the save operation.
       If MsgBox("Do you want to save?", vbYesNo + vbQuestion, _
               "Save Record") = vbNo Then
          Me.Undo
       End If
     End If
    
    Exit_BeforeUpdate:
     Exit Sub
    
    Err_BeforeUpdate:
     MsgBox Err.Number & " " & Err.Description
     Resume Exit_BeforeUpdate
    End Sub
    
  3. W menu Debugowanie kliknij pozycję Kompiluj northwind.

  4. W menu Plik kliknij pozycję Zapisz northwind.

  5. W menu Plik kliknij przycisk Zamknij i wróć do programu Microsoft Access.

Teraz, gdy wprowadzisz zmianę rekordu, a następnie przejdziesz do innego rekordu lub zamkniesz formularz, zostanie wyświetlony monit o potwierdzenie, że chcesz zapisać bieżący rekord. Jeśli klikniesz przycisk Nie, rekord zostanie zresetowany, a operacja będzie kontynuowana normalnie.