Defining Simple Field Validation Rules
To define a simple check on the values that you allow in a field, enter an expression in the Validation Rule property box for the field. Access 2010 won't allow you to enter a field value that violates this rule. Access performs this validation for data entered in a Table window in Datasheet view, in an updateable query, or in a form. You can specify a more restrictive validation rule in a form, but you cannot override the rule defined for the field in the table by specifying a completely different rule in the form.
In general, a field validation expression consists of an operator and a comparison value. If you do not include an operator, Access assumes you want an "equals" (=) comparison. You can specify multiple comparisons separated by the Boolean operators OR and AND.
It is good practice to always enclose text string values in quotation marks. If one of your values is a text string containing blanks or special characters, you must enclose the entire string in quotation marks. For example, to limit the valid entries for a City field to the two largest cities in the state of New York, enter "Los Angeles" Or "San Diego". If you are comparing date values, you must enclose the date constants in pound sign (#) characters, as in #07/1/2010#.
You can use the comparison symbols to compare the value in the field to a value or values in your validation rule. Comparison symbols are summarized in Table-4. For example, you might want to ensure that a numeric value is always less than 1000. To do this, enter <1000. You can use one or more pairs of comparisons to ask Access to check that the value falls within certain ranges. For example, if you want to verify that a number is in the range of 50 through 100, enter either >=50 And <=100 or Between 50 And 100. Another way to test for a match in a list of values is to use the IN comparison operator. For example, to test for states surrounding the U.S. capital, enter In ("Virginia", "Maryland"). If all you need to do is ensure that the user enters a value, you can enter the special comparison phrase Is Not Null.
Table-4 Comparison Symbols Used in Validation RulesOperator | Meaning |
---|---|
NOT | Use before any comparison operator except IS NOT NULL to perform the converse test. For example, NOT > 5 is equivalent to <=5. |
< | Less than |
<= | Less than or equal to |
> | Greater than |
>= | Greater than or equal to |
= | Equal to |
<> | Not equal to |
IN | Test for equal to any member in a list; comparison value must be a comma-separated list enclosed in parentheses |
BETWEEN | Test for a range of values; comparison value must be two values (a low and a high value) separated by the AND operator |
LIKE | Test a Text or Memo field to match a pattern string |
IS NOT NULL | Requires the user to enter a value in the field |
When you set the Required property to Yes and the user fails to enter a value, Access 2010 displays an unfriendly message:
"You must enter a value in the '<tablename.fieldname>' field."
We recommend that you use the Validation Rule property to require a value in the field and then use the Validation Text property to generate your own specific message.
If you need to validate a Text, Memo, or Hyperlink field against a matching pattern (for example, a postal code or a phone number), you can use the LIKE comparison operator. You provide a text string as a comparison value that defines which characters are valid in which positions. Access understands a number of wildcard characters, which you can use to define positions that can contain any single character, zero or more characters, or any single number. These characters are shown in Table-5.
Table-5 LIKE Wildcard CharactersCharacter | Meaning |
---|---|
? | Any single character |
* | Zero or more characters; use to define leading, trailing, or embedded strings that don't have to match any specific pattern characters |
# | Any single digit |
You can also specify that any particular position in the Text or Memo field can contain only characters from a list that you provide. You can specify a range of characters within a list by entering the low value character, a hyphen, and the high value character, as in [A-Z] or [3-7]. If you want to test a position for any characters except those in a list, start the list with an exclamation point (!). You must enclose all lists in brackets ([ ]). You can see examples of validation rules using LIKE here.
Validation Rule | Test For |
---|---|
LIKE "#####" or | A U.S. 5-digit ZIP Code |
LIKE "#####-####" | A U.S. 9-digit ZIP+ Code |
LIKE "[A-Z]#[A-Z] #[A-Z]#" | A Canadian postal code |
LIKE "###-##-####" | A U.S. Social Security Number |
LIKE "Smith*" | A string that begins with Smith1 |
LIKE "*smith##*" | A string that contains smith followed by two numbers, anywhere in the string |
LIKE "??00####" | An eight-character string that contains any first two characters followed by exactly two zeros and then any four digits |
LIKE "[!0-9BMQ]*####" | A string that contains any character other than a number or the letter B, M, or Q in the first position and ends with exactly four digits |
1 Character string comparisons in Access are case-insensitive. So, smith, SMITH, and Smith are all equal.
In this tutorial:
- Designing Client Tables
- Creating a New Database
- Creating a New Empty Database
- Creating Your First Simple Table by Entering Data
- Creating a Table Using Application Parts
- Creating a Table Using Data Type Parts
- Creating a Table in Design View
- Understanding Field Data Types
- Setting Field Properties
- Nulls and Zero-Length Strings
- Defining Simple Field Validation Rules
- Defining Input Masks
- Defining a Primary Key
- Defining a Table Validation Rule
- Understanding Other Table Properties
- Defining Relationships
- Defining Your First Relationship
- Creating a Relationship on Multiple Fields
- Adding Indexes
- Multiple-Field Indexes
- Setting Table Design Options
- Creating a Default Template for New Databases
- Printing a Table Definition
- Database Limitations