Access 2003完整教程:关于使用程序方法验证数据

通过设置控件的属性或是在基础表中设置记录或字段的有效性规则,可以验证输入到窗体控件或表字段中的数据是否正确。而对于较复杂的有效性验证,宏和事件过程则可提供更强大而灵活的手段。

在下列情况下,需使用宏或事件过程来验证数据:

使用宏

在某些情况下,所需的有效性规则可能受复杂条件的左右,需要根据这些条件执行不同的操作。例如,由于不同国家/地区的邮政编码规则不一样,所以存储各个国家/地区邮政编码的数据库不能只依靠简单的有效性规则来确保输入的邮政编码的正确性。

不过,可以通过创建宏首先检测“国家/地区”控件上输入的国家/地区名称,然后再检查“邮政编码”控件上输入的值是否符合该国/地区的邮政编码规则。

首先,创建一个宏,根据“国家/地区”控件的值和“邮政编码”控件的输入值长度来显示不同的消息。

用宏验证数据

标注 1如果国家/地区是“中国”,邮政编码不是五个字符长 ...

标注 2...宏显示该消息。

然后,在“设计”视图中打开包含上述控件的窗体,然后将窗体的“更新前”事件属性设置为所创建的宏的名称。在这里使用窗体属性而不使用控件属性,是因为有效性规则涉及窗体上的两个不同控件。

现在,向窗体上添加新的供应商时,Microsoft Access 会在输入完新记录,但还没有保存到“供应商”表之前运行有效性规则。如果满足宏中的任何一个条件,Access 将显示相应的信息并且不将记录保存到“供应商”表中。

使用事件过程

可以通过创建事件过程首先检测“国家/地区”控件上输入的国家/地区名称,然后再检查“邮政编码”控件上输入的值是否符合该国家/地区的邮政编码特征。

首先,在“设计”视图中打开包含上述控件的窗体,然后将下面的 Visual Basic 代码添加到窗体的 BeforeUpdate 事件过程中,以根据“国家/地区”控件的值和“邮政编码”控件的输入值长度显示不同的消息。

注释您应将 Visual Basic 代码添加到窗体的 BeforeUpdate 事件过程中,而不是控件的事件过程中,因为有效性规则涉及窗体上两个不同的控件。

Private Sub Form_BeforeUpdate(Cancel As Integer)
 Select Case Me![Country]
 Case "France"
 If Len(Me![PostalCode]) <> 5 Then
 MsgBox "PostalCode must be 5 characters."
 Cancel = True
 End If
 Case "Japan"
 If Len(Me![PostalCode]) <> 3 Then
 MsgBox "PostalCode must be 3 characters."
 Cancel = True
 End If
 End Select
End Sub

现在,使用窗体添加新的供应商时,Microsoft Access 会在输入完新记录,但没有保存到“供应商”表之前运行有效性过程。如果满足过程中的任何一个条件,Access 将显示相应的信息并且不将记录保存到“供应商”表中。

上页:Access 2003完整教程:关于事件和事件过程 下页:Access 2003完整教程:数据定义查询的示例 (MDB)

Access 2003完整教程:关于使用程序方法验证数据

Access 2003完整教程:数据定义查询的示例 (MDB)Access 2003完整教程:关于对记录进行分组
Access 2003完整教程:计算运行总和的报表示例Access 2003完整教程:页码表达式的示例
Access 2003完整教程:宏条件的示例Access 2003完整教程:每组都另起新行或新列的报表示例
Access 2003完整教程:关于使用模板创建窗体或报表Access 2003完整教程:联合查询示例 (MDB)
Access 2003完整教程:打印窗体和报表时缩放文本框的示例Access 2003完整教程:关于窗体
Access 2003完整教程:沙盒模式中禁用的函数Access 2003完整教程:关于宏和宏组
Access 2003完整教程:关于分发安全性增强的应用程序 (MDB)Access 2003完整教程:关于模块
Access 2003完整教程:打开示例数据库或项目Access 2003完整教程:改进 Visual Basic 代码的性能
Access 2003完整教程:控件和字段的验证顺序Access 2003完整教程:关于从窗体中打印报表
Access 2003完整教程:关于使用“名称自动更正”来改正重命名导致的错误 (MDB) Access 2003完整教程:关于从另一应用程序中粘贴数据
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号