If you want to disable the command button, and enable it only when all
controls have been entered, and prevent the user from saving the record any
other way, you will have to:
1. Use the AfterUpdate event procedure of *every* control to call a
procedure that loops through all the relevent controls on the form, and
tests them for Null, enabling the button only if none Is Null.
2. Handle the Click event of the button so that it forces the save, and
closes the form only if the save succeeds, to avoid the bug in Access where
the Close action/method silently loses the record if it cannot be saved:
http://members.iinet.net.au/~allenbrowne/bug-01.html
3. Set up code that cancels the Unload event of the form if the event was
triggered by any means other than your command button (by which time the
record is alreay saved), and/or disable/remove the control box and close
buttons on both the form and on the Access application, as well as the
menus, toolbars, keyboard shortcuts, and right-mouse shortcuts.
Sorry: I don't see the point of forcing the user into that kind of
straight-jacket. What was the reason for doing it that way again?
I guess the code-free solution of setting the Required property to Yes for
each field in table design is not appealing either?
I think that has given you at least one option for each of our a, b, and c
choices.

You have the advantage of knowing what you want to achieve and
why.