Access always saves the data, if it has been modified whenever the form is closed (other situations also). Most people have trouble STOPPING Access from saving bad data because they put their validation code in the wrong events.
Poor practice. This means that you always need to know exactly what form opened the current one which makes it awkward for forms that can be opened directly from the menu as well as from another form or even worse, from multiple other forms.
Best practice. On the line after you open the new form, close the opening form if you have no intention of going back. In my apps I generally want to return to the opening form once the popup is complete so I open the second form a a dialog so I can stop the opening form's code from running. Then on the line before the openForm action, I hide the current form. In the open args, I pass in the name of the calling form.
Me.Visible = False
Then I open the second form as a dialog. When the second form is done and ready to close, I use the value in the openargs to open the calling form. That just unhides the original form AND more importantly, code resumes on the line after the OpenForm action. This allows me to requery the original form if the second form might have made data changes or added new records.
If you don't open the second form as a dialog, code continues executing after the OpenForm until the end of the procedure so you don't have control at the right spot when the called form closes to requery and capture any changes. This causes developers to try to make the second form automate the calling form and we're back to issues with the first form being closed,etc.