I would like to create a command button on frmMainMeal that, when clicked, will fill the AttributeOne field with a desired text and thus "activate" the autonumber in the MealID field.
I am not sure what you mean by 'desired text'. You can use VBA behind a click event of a command button. The VBA would look like this.
Code:
Me.AttributeOne.Value = "Some desirable text"
'or
Me!AttributeOne = "Some desirable text"
The VBA code goes within a procedure in the Form's Module. You can go to the Event tab under the property sheet while your command button is selected. There, you will find a list of Events. Beside the Click Event, to the right, is an ellipses(...). Click the ellipses and, then, double click "Code Builder" to launch the VBA editor. When the VBA editor opens, your cursor will be in the middle of your new click event handler/procedure. This is where your code goes.
Also, is it possible to have all items on the mainform an subform "greyed out" until I click the command button?
There are two properties for most controls that will, when set to the correct combination, cause the control to be greyed out and unavailable for the user. The two properties are Enabled and Locked. These properties are located under the Data tab within the Property Sheet. The defaults are Enabled = Yes and Locked = No. To grey out a control, set its properties (within the Properties Sheet) to the following ...
Enabled = No
Locked = No
You can adjust the properties of controls via VBA. For instance, you can place the following within a Click Event of a command button.
Code:
Me.Text19.Enabled = True
So far, I have answered your specific questions without offering my opinion on what a Best Practice may or may not be. I feel I should mention that your example DB you uploaded does not seem to be following a standard convention. A typical Main Form/Subform arrangement for data entry would use the main form to create a new record and the subform would show the summary of relevant records. I see that you have a desire for datasheet view and a summary. In this case, an unbound main form may be the best approach.
You can have an unbound main form and place a subform control in it. The subform's Source Object can be a bound form (like in your example). Unbound controls within your Main Form can have expressions that reference the subform and display summaries of the subform's recordset.