And, you might want to use a Private Form level boolean variable in the form, (bEditInProgress, or bSaveNeeded, or whatever), which is set to True as soon as the user makes a change (in any edit Control's Change event). If the user then tries to close the form (or move to another record), you can check the value in the Form_QueryUnload event (or the ADO WillMove event, or when the control is clicked that moves to another record). If the value is True, the pop up a MsgBox, asking the user if they want to save or not. If they want to save, then execute the save method, or set the Cancel variable to True to cancel unloading the form.
Once saved, or if they do not want to save, set the Boolean back to False.
If the user closes the application, then each Form's Form_QueryUnload event will kick into action, and if there is code there to check if the Edit boolean is set to true, the application termination will not take place, if everything is done correctly. *******************************************************
General remarks:
If this post contains any suggestions for the use or distribution of code, components or files of any sort, it is still your responsibility to assure that you have the proper license and distribution rights to do so!