ACC: No Warning Closing a Form with a Required Field Left Null (180167)
The information in this article applies to:
- Microsoft Access 2.0
- Microsoft Access for Windows 95 7.0
- Microsoft Access 97
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 '<tablename>.<fieldname>' 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 '<tablename>.<fieldname>' 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:
Name: CloseForm
Caption: Close Form
- 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.
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
- View the form in Form View.
- Type any data in Field2 and click the Close Form button. Note that you
receive a message stating that Field1 must contain a value.
REFERENCES
For more information about the Close method, search the Help Index for
"Close Method."
For more information about the Required property, search the Help Index for
"Required Property."
Modification Type: | Major | Last Reviewed: | 5/28/2003 |
---|
Keywords: | kbprb KB180167 |
---|
|