创建用于验证字段数据的有效性规则.doc_第1页
创建用于验证字段数据的有效性规则.doc_第2页
创建用于验证字段数据的有效性规则.doc_第3页
创建用于验证字段数据的有效性规则.doc_第4页
创建用于验证字段数据的有效性规则.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

创建用于验证字段数据的有效性规则本文说明如何向数据库中添加有效性规则。有效性规则限制用户可以在给定字段中输入哪些内容,还帮助确保数据库用户输入正确的数据类型或数据量。您要做什么?了解有效性规则有效性规则限制或控制用户可以在表字段或窗体上的控件(如文本框)中输入哪些内容。Microsoft Office Access 2007提供了许多验证数据的方法,您通常使用其中几种技术来定义有效性规则。可以将有效性规则看作是一组层-在需要确保用户正确输入数据时可以使用其中部分或全部层。数据类型数据类型通常提供第一层验证。在设计数据库表时,您为表中的每个字段定义一个数据类型,该数据类型限制用户可以输入哪些内容。例如,日期/时间字段只接受日期和时间,货币字段只接受货币数据,依此类推。字段大小字段大小提供另一层验证。例如,如果创建存储名字的字段,可以将其设置为最多接受20个字符。这样做可以防止恶意用户向字段中粘贴大量的无用文本,也可以防止缺少经验的用户在旨在存储名字的字段中错误地输入名字和姓氏。表属性表属性提供非常具体的几类验证。例如,可以将必填属性设置为是,从而强制用户在字段中输入值。还可以使用有效性规则属性要求输入特定的值,以及使用有效性文本属性来提醒用户存在错误。例如,在有效性规则属性中键入100 And 1000等值会强制用户输入100到1,000之间的值。诸如结束日期开始日期的规则强制用户输入不早于开始日期的结束日期。在有效性文本属性中输入输入100到1,000之间的值或输入不早于开始日期的结束日期等文本会在用户出错时通知用户并说明如何修复该错误。有关向表字段中添加有效性规则所需的步骤,请参阅本文后面的在向表字段中输入内容的过程中验证数据一节。输入掩码可以使用输入掩码通过强制用户以特定方式输入值来验证数据。例如,一个输入掩码强制用户以欧洲格式输入日期,如2007.04.14。可以使用上述部分或全部技术来验证数据。其中的部分功能(如数据类型)默认集成到数据库中,但您也可以根据自己的需要使用其他技术,如字段属性、有效性规则和输入掩码。本文说明如何在表字段、查询和窗体控件中使用有效性文本和有效性规则属性。有关其他验证工具(如数据类型、字段大小和输入掩码)的全面讨论超出了本文的范畴。有关数据类型和字段大小的详细信息,请参阅修改或更改为字段设置的数据类型一文。有关输入掩码的详细信息,请参阅创建输入掩码以便以特定格式输入字段或控件值一文。有效性规则的类型可以创建两种基本类型的有效性规则:字段有效性规则使用字段有效性规则可在离开某个字段时检查在该字段中输入的值。例如,假设有一个日期字段,并且您在该字段的有效性规则属性中输入了=#01/01/2007#。该规则现在要求用户输入2007年1月1日或以后的日期。如果输入了早于2007年的日期,然后尝试将焦点放在其他字段上,则Access会阻止您离开当前字段,直到您修复了该问题。记录(或表)的有效性规则使用记录有效性规则可以控制何时可以保存记录(表中的行)。与字段有效性规则不同,记录有效性规则引用同一个表中的其他字段。在需要对照一个字段中的值检查另一个字段中的值时,应当创建记录有效性规则。例如,假设贵公司要求您在30天内发货,如果您未能在该时间内发货,则必须向客户退还部分货款。您可以定义诸如要求日期订购日期+30这样的有效性规则,来确保不会有人输入距离订购日期太久的发货日期(要求日期字段中的值)。如果有效性规则的语法看上去很晦涩,请参阅可以在有效性规则中使用哪些内容一节中的表,这些表对语法进行了说明并提供了一些有效性规则示例。可以在哪些位置使用有效性规则可以为表或窗体上的控件定义有效性规则。如果为表定义规则,则这些规则在您导入数据时适用。若要向表中添加有效性规则,请在设计视图中打开该表,然后设置各种表属性。若要向窗体中添加有效性规则,请在设计视图中打开该窗体,然后向各个控件的属性中添加规则。在向表字段中输入内容的过程中验证数据一节中的步骤说明了如何向表字段的属性中添加有效性规则。本文后面的在向窗体中输入内容的过程中验证数据一节中的步骤说明了如何向各个控件的属性中添加规则。可以在有效性规则中使用哪些内容有效性规则可以包含表达式-返回单个值的函数。可以使用表达式执行计算、操作字符或测试数据。在创建有效性规则时,主要使用表达式来测试数据。例如,表达式可以检查一系列值中的某个值,如东京Or莫斯科Or巴黎Or赫尔辛基。表达式还可以执行数学运算。例如,表达式100强制用户输入小于100的值。表达式订购日期发货日期计算在下订单与发货之间所经过的天数。有关表达式和函数的讨论超出了本文的范畴。有关表达式的详细信息,请参阅创建表达式一文。有关函数的详细信息,请参阅Microsoft Office Online上的文章。有关使用表达式验证数据的方法示例,请参阅验证记录中的数据一节。下面各节中的步骤说明了如何为表、窗体、查询和导入操作验证数据。在向表字段中输入内容的过程中验证数据本节中的步骤说明如何创建字段级和记录级有效性规则,以及如何根据新的有效性规则来测试现有数据。可以为所有数据类型输入有效性规则,但自动编号、OLE对象和附件数据类型以及设置为同步复制ID的数字字段除外。验证字段中的数据在导航窗格中,右键单击要更改的表,然后单击设计视图。在字段名称列中,选择要更改的字段。在表设计器下半部分中的常规选项卡上,选择有效性规则属性框,然后输入您的有效性规则。-或-在属性表的数据选项卡上单击,然后单击旁边的以启动表达式生成器并创建表达式。有关使用表达式生成器的详细信息,请参阅创建表达式一文。输入仅适用于该字段的规则。例如,可以输入0来强制用户输入正值。请记住,字段的有效性规则不会引用表中的其他字段。如果规则引用其他字段,则表明创建的是记录级有效性规则。选择有效性文本属性框并输入有效性消息。输入的消息取决于有效性规则。消息应当简短并尽量指出用户出错的位置。仍以上一步中的示例以例,可以使用仅输入正数作为有效性文本。保存所做的工作。注释有关字段级有效性规则的更多示例,请参阅本文后面的有效性规则参考一节。验证记录中的数据重复上一节中的步骤1-2在设计视图中打开表。在常规选项卡上,在有效性规则属性框中输入记录级规则。-或-单击旁边的以启动表达式生成器并创建表达式。有关使用表达式生成器的详细信息,请参阅创建表达式一文。记录级有效性规则引用多个表字段。例如,诸如要求日期订购日期+30这样的规则引用两个表字段(要求日期和订购日期),确保用户输入的发货日期在输入订单后的30天内。有关记录级有效性规则的更多示例,请参阅有效性规则参考一节。保存所做的更改。测试有效性规则在设计视图中打开包含有效性规则的表。在设计选项卡上的工具组中,单击测试有效性规则。单击是关闭警告消息并启动测试。如果系统提示您保存表,请单击是。在执行操作时,可能会看到其他各种警告消息。阅读每条消息中的说明,然后根据需要单击是或否完成或停止测试。使用查询测试有效性规则注释您还可以通过编写测试不符合有效性规则的记录的查询来测试有效性规则。此类查询的结果会准确地显示出哪些记录不满足有效性要求。例如,如果将必填属性设置为是或Is Not Null,将测试值为null的字段。在创建选项卡上的其他组中,单击查询设计。Access在设计视图中打开一个新查询,并显示显示表对话框。在显示表对话框中,选择要在查询中使用的表,单击添加将它们添加到查询中,然后单击关闭。所选的表在查询设计器的上半部显示为窗口。在每个表中,双击要包括在查询中的字段。-或-将字段从表中拖放到设计网格下半部字段行中的空白单元格上。请确保添加包含有效性规则的字段。在包含有效性规则的字段的条件单元格中,输入与该规则相反的条件。例如,如果使用BETWEEN 100 AND 1000,则输入100 OR 1000。在设计选项卡上的结果组中,单击运行。在向窗体中输入内容的过程中验证数据将有效性规则应用于窗体的最简便快捷的方法是先向基础表字段中添加该规则,然后使用Access提供的自动窗体创建工具来创建窗体。例如,在创建选项卡上的窗体组中,可以选择让Access创建简单窗体、分割窗体、多项目窗体等等。在使用其中某个工具时,窗体上的控件继承基础表属性,其中包括所有有效性规则和有效性文本。还可以将有效性规则应用于窗体控件,方法是在设计视图中打开窗体,然后向控件的有效性规则属性中添加规则并向有效性文本属性中添加消息文本。您可以向一些(而非全部)窗体控件中添加有效性规则。确定能否向控件中添加有效性规则的最简便方法是在设计视图中打开窗体,然后按照本节中的步骤执行操作。请记住,控件的有效性规则可以与该控件所绑定到的表字段的有效性规则不同。当有效性规则之间发生冲突时,将优先采用为表字段定义的规则。此外,请记住控件中的规则与表字段中的规则会相互抵消,因此可能使您根本无法输入任何数据。例如,假设您对一个表中的日期字段应用了以下规则:#01/01/2007#但是,您对绑定到该表字段的窗体控件应用了以下规则:=#01/01/2007#表字段要求2007年之前的值,但窗体控件强制您输入2007年之后的日期,因此您根本无法输入任何数据。如果尝试在这些条件下输入数据,则Access会通知您输入相互冲突的有效性规则所指定的日期之前和之后的日期,您会发现自己陷入到一个无限循环中。下面的步骤说明如何向控件中添加有效性规则,以及如何锁定控件以防止用户更改数据。创建有效性规则在导航窗格中,右键单击要更改的窗体,然后单击设计视图。右键单击要更改的控件,然后单击属性打开该控件的属性表。单击全部选项卡,然后在有效性规则属性框中输入您的有效性规则。-或-单击旁边的以启动表达式生成器并创建表达式。有关使用表达式生成器的详细信息,请参阅创建表达式一文。在有效性文本属性框中输入消息。保存所做的更改。锁定控件按照上一节中的步骤1-2操作以打开要锁定的控件的属性表。单击全部选项卡,定位到可用和锁定属性框,然后请执行下列操作之一:若要禁用控件(使控件显示为灰色并无法接收焦点),请将可用属性设置为否。若要使控件中的数据可读,但不允许用户更改数据,请将锁定属性设置为是。如果将可用属性设置为否,将锁定属性设置为是,则控件不会显示为灰色,但仍然无法接收焦点。在导入操作过程中验证数据如果向表中添加有效性规则,然后将数据导入到该表中,则Access会对导入的数据应用有效性规则。此规则在您链接数据时也适用。有关导入或链接数据的详细信息,请参阅下列文章:有效性规则参考下面的表提供了有效性规则的参考信息,其中包括最常见的规则使用的语法、有关在规则中使用通配符的信息的链接以及可以针对您的数据进行相应改编的示例。有效性规则示例下表提供了字段级和记录级有效性规则的示例,以及说明性有效性文本。可以针对您的内容对这些示例进行相应的改编。有效性规则有效性文本输入非零值。=0值不得小于零。-或-必须输入正数。0 or 100值必须为0或者大于100。BETWEEN 0AND 1输入带百分号的值。(用于将数值存储为百分数的字段。)#01/01/2007#输入2007年之前的日期。=#01/01/2007#AND#01/01/2008#必须输入2007年的日期。Date()出生日期不能是将来的日期。StrComp(UCase(姓氏),姓氏,0)=0姓氏字段中的数据必须大写。=Int(Now()输入当天的日期。M Or F输入M(代表男性)或F(代表女性)。LIKEA-Z*A-Z.comORA-Z*A-Z.netORA-Z*A-Z.org输入有效的.com、.net或.org电子邮件地址。要求日期=订购日期+30输入在订单日期之后的30天内的要求日期。结束日期=开始日期输入不早于开始日期的结束日期。常见有效性规则的语法有效性规则中的表达式不使用任何特殊语法。本节中的信息说明某些较常见类型的有效性规则的语法。在执行操作时,请记住:表达式和函数可能会非常复杂,全面的讨论不在本文讨论范围之内。有关表达式的详细信息,请参阅创建表达式一文。有关函数的详细信息,请参阅函数(按类别排列)一文。创建表达式时,请牢记下列规则:将表字段的名称用方括号括起来,例如:要求日期订购日期+30。将日期用井号()括起来,例如:#01/01/2007#将文本值用双引号括起来,例如:IN(东京,巴黎,莫斯科)。另外,请注意用逗号分隔项目,并将列表放在圆括号内。除了上述规则之外,下表显示了常见的算术运算符并提供了使用方法示例。运算符函数示例NOT测试相反值。在除IS NOT NULL之外的任何比较运算符之前使用。NOT 10(与=10相同)。IN测试值是否等于列表中的现有成员。比较值必须是括在圆括号中的逗号分隔列表。IN(东京,巴黎,莫斯科)BETWEEN测试值范围。必须使用两个比较值(低和高),并且必须使用AND分隔符来分隔这两个值。BETWEEN 100 AND 1000(与=100 AND=1000相同)LIKE匹配文本和备注字段中的模式字符串。LIKEGeo*IS NOT NULL强制用户在字段中输入值。此设置与将必填字段属性设置为是具有同样的效果。但是,如果启用了必填属性但用户没有输入值,则Access会显示令人稍感不快的错误消息。通常,如果使用IS NOT NU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论