使用有效性规则限制数据输入

使用有效性规则限制数据输入

使用有效性规则输入数据时,可以在 Access​​ 桌面数据库中审查或验证数据。Access​​ 中有三种类型的有效性规则:

  • 字段验证规则   可以使用有效性规则指定所有有效字段值必须满足的条件。例如,日期字段可能拥有禁止过去的值的有效性规则。

  • 记录有效性规则   可以使用有效性规则指定所有有效记录必须满足的条件。例如,拥有两个日期字段的记录可能要求一个字段值始终位于另一字段值的前面(例如,“开始日期”在“结束日期”之前)。

  • 窗体中的验证   可以使用窗体中控件的“有效性规则”属性指定所有值输入到该控件必须满足的条件。“有效性规则”控件属性的工作方式类似于字段验证规则。

    注意: 本文不适用于 Access Web 应用 - 使用 Access 设计并联机发布的数据库。

本文内容

概述

有效性规则的类型

可以在哪些位置使用有效性规则

可以在有效性规则中使用哪些内容

向表添加有效性规则

创建字段验证规则

创建消息显示无效字段输入

创建记录有效性规则

创建消息显示无效记录输入

根据新的有效性规则来测试现有数据

向窗体中的控件添加有效性规则

创建控件的有效性规则

有效性规则参考

有效性规则和验证文本示例

常见有效性规则运算符的语法示例

在有效性规则中使用通配符

概述

本文说明如何使用表字段和窗体控件中的有效性规则和验证文本。有效性规则是限制表字段中的输入或窗体中的控件(例如文本框)的一种方法。验证文本要求您提供消息,以帮助输入无效数据的用户。

输入数据时,Access 检查输入是否违反有效性规则,如果违反,则不接受输入,Access 将显示一条消息。

Access 提供多种方法限制输入:

  • 数据类型   每个表字段都拥有限制用户能够输入的内容的数据类型。例如,日期/时间字段只接受日期和时间,货币字段只接受货币数据等。

  • 字段属性   部分字段属性限制数据输入。例如,字段的“字段大小”属性通过限制数据量来限制输入。

    还可以使用“有效性规则”属性要求特定的值,以及使用“验证文本”属性来提醒用户存在错误。例如,在“有效性规则”属性中输入 >100 And <1000 等规则会强制用户输入 100 到 1,000 之间的值。诸如 [结束日期]>=[开始日期] 等规则强制用户输入不早于开始日期的结束日期。在“验证文本”属性中输入“输入 100 到 1,000 之间的值”或“输入不早于开始日期的结束日期”等文本会在用户出错时通知用户并说明如何修复错误。

  • 输入掩码   可以通过使用输入掩码强制用户以特定方式输入值来验证数据。例如,一个输入掩码可强制用户以欧洲格式输入日期,如 2007.04.14。

可以单独使用这些验证数据方法或互相结合使用。数据类型不可选,提供大部分最基本的数据验证类型。

有关数据类型、字段大小和输入掩码的详细信息,请参阅数据类型和字段属性简介一文。

有效性规则的类型

可以创建两种基本类型的有效性规则:

  • 字段验证规则   使用字段验证规则可在离开某个字段时检查在该字段中输入的值。例如,假设有一个日期字段,并且你在该字段的“有效性规则”属性中输入了 >=#01/01/2010#。该规则现在要求用户输入 2010 年 1 月 1 日或以后的日期。如果输入了早于 2010 年的日期,然后尝试将焦点放在其他字段上,则 Access 会阻止你离开当前字段,直至你修复了该问题。

  • 记录有效性规则   使用记录有效性规则可以控制何时可以保存记录(表中的行)。与字段验证规则不同,记录有效性规则引用同一个表中的其他字段。在需要对照另一个字段中的值检查另一个字段中的值时,应当创建记录有效性规则。例如,假设贵公司要求你在 30 天内发货,如果你未能在该时间内发货,则必须向客户退还部分购买价格。你可以定义诸如 [要求日期]<=[订购日期]+30 这样的记录有效性规则,来确保不会有人输入距离订购日期太久的发货日期(“要求日期”字段中的值)。

如果有效性规则的语法看上去很晦涩,请参阅可以在有效性规则中使用哪些内容一节,了解对语法的说明以及一些有效性规则示例。

可以在哪些位置使用有效性规则

可以为表字段和窗体上的控件定义有效性规则。如果为表定义规则,则这些规则在您导入数据时适用。若要向表中添加有效性规则,请打开表并使用功能区的“字段”选项卡中的命令。若要向窗体中添加有效性规则,请在布局视图中打开该窗体,然后向各个控件的属性添加规则。

向表中添加有效性规则部分中的步骤说明了如何向表字段中添加有效性规则。本文后面的向窗体上的控件添加有效性规则部分中的步骤说明了如何向各个控件中的属性添加规则。

可以在有效性规则中使用哪些内容

有效性规则可以包含表达式 - 返回单个值的函数。可以使用表达式执行计算、操作字符或测试数据。有效性规则表达式测试数据。例如,表达式可以检查一系列值中的某个值,如 "东京" Or "莫斯科" Or "巴黎" Or "赫尔辛基"。表达式还可以执行数学运算。例如,表达式 <100 强制用户输入小于 100 的值。表达式 ([订购日期] - [发货日期]) 计算在下订单与发货之间所经过的天数。

有关表达式的详细信息,请参阅构建表达式一文。

返回页首

向表添加有效性规则

可以添加字段验证规则和/或记录有效性规则。字段验证规则检查字段的输入,并在焦点离开字段时应用。记录有效性规则检查一个或多个字段的输入,并在焦点离开记录时应用。记录有效性规则通常会比较两个或多个字段的值。

注释: 以下字段类型不支持有效性规则:

  • 自动编号

  • OLE 对象

  • 附件

  • ReplicationID

创建字段验证规则

  1. 选择要验证的字段。

  2. 在“字段”选项卡上的“字段验证”组中,单击“验证”,然后单击“字段验证规则”。

  3. 使用表达式生成器创建规则。有关使用表达式生成器的详细信息,请参阅使用表达式生成器一文。

创建消息显示无效字段输入

  1. 选择需要无效输入消息的字段。字段应该已拥有有效性规则。

  2. 在“字段”选项卡上的“字段验证”组中,单击“验证”,然后单击“字段验证消息”。

  3. 输入相应的消息。例如,如果有效性规则为 >10消息可能是“输入小于 10 的值”。

有关字段有效性规则和消息的一些示例,请参阅“有效性规则参考”部分。

创建记录有效性规则

  1. 打开要验证记录的表。

  2. 在“字段”选项卡上的“字段验证”组中,单击“验证”,然后单击“记录有效性规则”。

  3. 使用表达式生成器创建规则。有关使用表达式生成器的详细信息,请参阅使用表达式生成器一文。

创建消息显示无效记录输入

  1. 打开需要无效输入消息的表。该表应该已拥有记录有效性规则。

  2. 在“字段”选项卡上的“字段验证”组中,单击“验证”,然后单击“记录验证消息”。

  3. 输入相应的消息。例如,如果有效性规则是 [开始日期]<[结束日期]消息可能是“开始日期必须在结束日期之前”。

返回页首

根据新的有效性规则来测试现有数据

如果向现有表添加有效性规则,您可能希望测试规则,以查看是否有任何现有数据无效。

注意:  以下步骤仅适用于桌面数据库表。

  1. 打开希望在设计视图中测试的表。

    在“设计”选项卡上的“工具”组中,单击“测试有效性规则”。

  2. 单击“”关闭警告消息并启动测试。

  3. 如果系统提示您保存表,请单击“”。

  4. 在执行操作时,可能会看到其他各种警告消息。阅读每条消息中的说明,然后根据需要单击“”或“”完成或停止测试。

返回页首

向窗体中的控件添加有效性规则

可以使用窗体控件的“有效性规则”属性和“验证文本”属性验证输入到该控件的数据并帮助输入无效数据的用户。

提示:  如果使用功能区中的一个“窗体”命令自动从表中创建窗体,则窗体中相应的控件将继承基础表中的任何字段的有效性。

控件可以拥有不同于表字段的有效性规则,控件可以绑定到该不同的有效性规则。如果希望窗体比表有更多限制,这非常有用。先应用窗体规则,然后应用表规则。如果表比窗体限制更多,则为表字段定义的规则优先。如果规则互斥,则根本无法输入任何数据。

例如,假设您将以下规则应用到表中的日期字段:

<#01/01/2010#

但是,然后您对绑定到该日期字段的窗体控件应用了该规则:

>=#01/01/2010#

现在,日期字段要求 2010 年之前的值,但是窗体控件要求 2010 年之后的日期,因此您根本无法输入任何数据。

创建控件的有效性规则

  1. 右键单击要更改的窗体,然后单击“布局视图”。

  2. 右键单击要更改的控件,然后单击“属性”打开该控件的属性表。

  3. 单击“全部”选项卡,然后在“有效性规则”属性框中输入有效性规则。

    提示:  单击“生成”按钮启动表达式生成器。

    有关使用表达式生成器的详细信息,请参阅使用表达式生成器一文。

  4. 在“验证文本”属性框中输入消息。

返回页首

有效性规则参考

有效性规则使用 Access 表达式语法。有关表达式的详细信息,请参阅表达式简介一文。

有效性规则和验证文本示例

有效性规则

验证文本

<>0

输入非零值。

>=0

值不得小于零。

- 或 -

必须输入正数。

0 或 >100

值必须为 0 或者大于 100。

0 到 1 之间

输入带百分号的值。(用于将数值存储为百分比的字段)。

<#01/01/2007#

输入 2007 年之前的日期。

>=#01/01/2007# AND <#01/01/2008#

必须输入 2007 年的日期。

<Date()

出生日期不能是将来的日期。

StrComp(UCase([姓氏]),
[姓氏],0) = 0

“姓氏”字段中的数据必须大写。

>=Int(Now())

输入当天的日期。

M 或 F

输入 M(代表男性)或 F(代表女性)。

LIKE "[A-Z]*@[A-Z].com" 或 "[A-Z]*@[A-Z].net" 或 "[A-Z]*@[A-Z].org"

输入有效的 .com、.net 或 .org 电子邮件地址。

[要求日期]<=[订购日期]+30

输入在订单日期之后的 30 天内的要求日期。

[结束日期]>=[开始日期]

输入不早于开始日期的结束日期。

常见有效性规则运算符的语法示例

运算符

函数

示例

NOT

测试相反值。在除 IS NOT NULL 之外的任何比较运算符之前使用。

NOT > 10(与 <=10 相同)。

IN

测试值是否等于列表中的现有成员。比较值必须是括在圆括号中的逗号分隔列表。

IN ("东京","巴黎","莫斯科")

BETWEEN

测试值范围。必须使用两个比较值(低和高), 并且必须使用 AND 分隔符来分隔这两个值 。

BETWEEN 100 AND 1000(与 >=100 AND <=1000 相同)

LIKE

匹配文本和备注字段中的模式字符串。

LIKE "Geo*"

IS NOT NULL

强制用户在字段中输入值。此设置与将“必填”字段属性设置为“”具有相同的效果。但是,如果启用了“必填”属性但用户没有输入值,则 Access 会显示令人稍感不快的错误消息。通常,如果使用 IS NOT NULL 并在“验证文本”属性中输入友好的消息,则您的数据库会更易于使用。

IS NOT NULL

AND

指定有效性规则的所有部分必须为真。

>= #01/01/2007# AND <=#03/06/2008#

注意: 您还可以使用 AND 来组合有效性规则。例如:NOT "UK" AND LIKE "U*"

或者

指定有效性规则部分并非所有部分必须为真。

一月 OR 二月

<

小于。

<=

小于或等于。

>

大于。

>=

大于或等于。

=

等于。

<>

不等于。

在有效性规则中使用通配符

在有效性规则中可使用通配符。请记住,Access 支持两个通配符字符集:ANSI-89 和 ANSI-92。这两种标准使用不同的通配符字符集。

默认情况下,所有 .accdb 和 .mdb 文件都使用 ANSI-89 标准。

可以执行下列步骤将数据库的 ANSI 标准更改为 ANSI-92:

  1. “文件”选项卡上,单击“选项”

  2. 在“Access 选项”对话框中,单击“对象设计器”。

  3. 在“查询设计”部分的“SQL Server 兼容语法(ANSI-92)”下,选择“此数据库”。

有关使用通配符以及 SQL 的 ANSI 标准的详细信息,请参阅 Access 通配符参考一文。

返回页首

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×