How to Prevent Microsoft Access Record Changes Until Save Is Clicked
Question details
The user wants to stop Microsoft Access forms from automatically saving changes, requiring instead that users explicitly confirm or click a Save button before updating the database.

- Product
- Microsoft Access
- Device & OS
- not provided
- Scenario
- Managing data entry forms where users might accidentally modify existing records or create new ones without realizing the database updates automatically.
- Observed behavior
- By default, Microsoft Access forms automatically save any changes made to a record as soon as the user navigates away from the record or closes the form.
Before modifying form behaviors, identify whether your form is currently bound directly to a table (Bound Form) or operating independently (Unbound Form), as this determines the VBA approach required.
Use the Form_BeforeUpdate Event on a Bound Form
This is the most efficient method for bound forms, allowing you to intercept the automatic save action and prompt the user for confirmation before writing data to the table.
When using bound forms, Access triggers the BeforeUpdate event right before saving changes to the underlying table. By adding VBA code to this event, you can display a confirmation dialog. If the user declines, you can cancel the event and undo the changes.
Open your Microsoft Access database, right-click the form you want to modify in the Navigation Pane, and select 'Design View'.
Press F4 to open the Property Sheet. Ensure that 'Form' is selected in the Selection type dropdown at the top of the Property Sheet.
Navigate to the 'Event' tab in the Property Sheet. Locate the 'Before Update' property, click the dropdown arrow, and select '[Event Procedure]'. Then click the ellipsis (...) button to open the VBA editor.
In the VBA editor, write a MsgBox prompt to ask the user if they want to save changes. If the response is vbNo, set 'Cancel = True' and execute 'Me.Undo' to revert the fields to their original values.

Utilize an Unbound Form or Temporary Table
For complete control over when data is written to the database, use an unbound form or a temporary table that only updates the main table upon a button click.
Looking for a Lighter Way to Manage Data? Try WPS Office
While Microsoft Access is powerful for complex relational databases, managing simple data lists and form inputs is often easier in a robust spreadsheet program. WPS Office offers a free, lightweight, and highly compatible alternative to Microsoft Office for your daily document and data management needs.
- 1. Download the Installer: Visit the official WPS Office website and download the free installation package for your operating system.
- 2. Install WPS Office: Run the installer and follow the on-screen instructions. The installation is lightweight and completes in minutes.
- 3. Open Your Spreadsheets: Launch WPS Spreadsheets to seamlessly open, edit, and manage your existing Excel data lists and forms.

Frequently Asked Questions
Why does Microsoft Access automatically save records by default?
Access is designed as an interactive, real-time relational database management system. To maintain data integrity across multiple users in a networked environment, it commits changes to the database the moment a user moves to another record or closes a form.
Can I disable auto-save globally across the entire Access database?
No, there is no global setting in Microsoft Access to turn off automatic saving. The auto-save behavior must be intercepted and managed at the form level using VBA events or by utilizing unbound forms.
What is the difference between a bound and an unbound form?
A bound form is directly linked to an underlying table or query, meaning any changes made in the form fields are automatically updated in the database. An unbound form is not linked to any data source; developers must use VBA to manually load data into the fields and write it back to the database when desired.
What happens if a user closes the form instead of clicking my custom Save button?
If it is a bound form, Access will still attempt to save the record upon closing. To prevent this, your VBA code in the Form_BeforeUpdate or Form_Unload event must intercept the close action, check if changes are unsaved, and prompt the user accordingly.




