Microsoft KB Archive/180167

= ACC: No Warning Closing a Form with a Required Field Left Null =

Article ID: 180167

Article Last Modified on 1/22/2007

-

APPLIES TO


 * Microsoft Access 2.0 Standard Edition
 * Microsoft Access 95 Standard Edition
 * Microsoft Access 97 Standard Edition

-



This article was previously published under Q180167



Moderate: Requires basic macro, coding, and interoperability skills.



SYMPTOMS
When you use code (for example, on a command button) to close a form that contains a control bound to a field that has its Required property set to Yes, and you enter no data for that control, you do not receive an error message.

If you close the same form by using the Windows Close button, the Close action in a macro, or by clicking Close on the File menu, you do receive the following message as expected:

  The field '. ' can't contain a null value because the Required property for this field is set to True. Enter a value in this field.

-or-

Field '. ' can't contain a null value.



RESOLUTION
By default, the changes to the record will be aborted without warning. If you need to check whether data has been entered in the required field, you will need to do so manually in code, as shown in the following example:

 Start Microsoft Access and create a new database.  Create the following new table:

     Table:   Table1 --     Field Name: Field1 Data Type: Text Required: Yes Field Name: Field2 Data Type: Text Required:  No                         Close and save the table as Table1. Do not add a primary key when prompted. In the Database window, select the Table1 table, and then on the Insert menu, click AutoForm.  View the form in Design view and add a new command button as follows:

<pre class="fixed_text">     Name: CloseForm Caption: Close Form </li>  Set the CloseForm command button's OnClick property to the following event procedure:

NOTE: In the following sample code, an underscore (_) at the end of a line is used as a line-continuation character. If you are using Microsoft Access 2.0, remove the underscore from the end of the line when re-creating this code.

<pre class="fixed_text">     If IsNull(Me![Field1]) Then If MsgBox("'Field1' must contain a value." & Chr(13) & Chr(10) & _       "Press 'OK' to return and enter a value." & Chr(13) & Chr(10) & _        "Press 'Cancel' to abort the record.", _        vbOKCancel, "A Required field is Null") = vbCancel Then DoCmd.Close ' For Access 2.0 remove the previous line and replace with: ' DoCmd Close Else Me![Field1].SetFocus End If     Else DoCmd.Close End If                       </li> View the form in Form View.</li> Type any data in Field2 and click the Close Form button. Note that you receive a message stating that Field1 must contain a value.</li></ol>

<div class="moreinformation_section">

Steps to Reproduce Behavior
<ol> Start Microsoft Access and create a new database.</li>  Create the following new table:

<pre class="fixed_text">     Table:   Table1 --     Field Name: Field1 Data Type: Text Required: Yes Field Name: Field2 Data Type: Text Required:  No                        </li> Close and save the Table1 table. Do not add a primary key when prompted.</li> In the Database window, select the Table1 table, and then on the Insert menu, click AutoForm.</li>  View the form in Design view and add a new command button as follows:

<pre class="fixed_text">     Name: CloseForm Caption: Close Form </li>  Add the following code to the Click event of the CloseForm button.

In Microsoft Access 95 or 97:

<pre class="fixed_text">     DoCmd.Close

In Microsoft Access 2.0:

<pre class="fixed_text">     DoCmd Close </li> On the View menu, select Form View.</li> Type any data in Field2 and click the Close Form command button.</li></ol>

Note that the form closes without any error message and the record is not saved.

However, if you close the form by using the Windows Close button or by clicking Close on the File menu, you do receive the messages mentioned in the "Symptoms" section.

<div class="references_section">