Button to check for missing values in a MainForm and Subforms in MS Access

158 views Asked by At

New to Access (still), have only basic VBA skills.

I've got 3 subforms (subfrm_PackingSteps1 , subfrm_MetalDetection and subfrm_Weights - the first 2 are continuous and the other one is single form) within a main form (frm_daily_packing_record) that users go through and input data. The user should be able to input data in no particular order, and only at the end there would be a button to confirm that the user is ready to save this form.

I'd like to have this button on the main form that checks each control (in main form and subforms) for empty values. I found and adjusted a code to check the recordset of one of the continuous forms (see below), but I can't figure out:

  1. how to include a code that checks each control instead of manually adding all of them (I've used a function before that utilises the Tag property, but can't add it to this)

  2. how to keep the button in the main form while checking the controls/recordsets in the other subforms.

Thanks in advance.

Private Sub ConfirmBtn_Click()
Dim blnSuccess As Boolean
 
blnSuccess = True
 
Me.Recordset.MoveFirst
Do While Not Me.Recordset.EOF


 If IsNull(Me.pc) Or IsNull(Me.InnerP) Then
   blnSuccess = False
        
        Exit Do
    End If
    Me.Recordset.MoveNext
Loop
 
If blnSuccess = True Then
    MsgBox "You may proceed to save this record"
Else
    MsgBox "You still have some empty fields to fill in!", vbCritical + vbOKOnly, "Empty Fields!"
End If
End Sub
1

There are 1 answers

0
CanuckClinton On

I personally don't like this because it is too code-heavy and can easily break when the form is modified.

Instead may I suggest doing it slightly different, for each field have vba code .ondirty or .onupdate and do the validation checking right as the user is actually on that field.

This has 2 benefits, it is creating the validation when you are creating each form field and it STOPS the user right when their first mistake or bad data is entered. The last thing I want is to enter 50 fields, scroll to the bottom, submit fails then scroll back and try to find where the mistake was. If validation is done while the user it doing the actual data entry, when you get to the bottom you should have valid data and the submit should succeed without further testing.

Less code to debug and timely messages to the user if an error is caught!