A family of Microsoft relational database management systems designed for ease of use.
There is a Before Update event at two different levels: that of individual controls and that of the form as a whole.
The Before Update even of a control fires before the value of the control is updated. It doesn't fire before the record as a whole is updated.
The Before Update event of a form fires before the current record is updated. It doesn't fire before individual controls on the form are updated.
As you have found, undoing all changes in the Before Update event is not ideal. I'd use the On Unload event of the form and cancel the unload if not all required data have been filled in. That would allow the user to visit the subforms and return to the main form without clearing the record.
Private Sub Form_Unload(Cancel As Integer)
' Test whether required information has been filled in
If ... Then
MsgBox "Not all required information has been provided."
Cancel = True
End If
End Sub