TextBox.ValidationRule 属性 (Access)
使用 ValidationRule 属性可以指定记录、字段或控件中输入的数据的要求。 当输入数据不符合 有效性规则 设置时,可以使用 有效性文本 属性来指定要显示给用户的消息。 读/写 String。
语法
表达式。ValidationRule
表达 一个代表 TextBox 对象的变量。
备注
输入将 有效性规则 属性设置为的表达式,并将 有效性文本 属性设置为文本。 将 有效性规则 属性设置为的最大长度为 2048年个字符。 将 有效性文本 属性设置为的最大长度为 255 个字符。
对于控件,可以为任何有效的表达式中设置 有效性规则 属性。 对于字段和记录验证规则,表达式不能包含用户定义的函数、域聚合或聚合函数、 Eval 函数、 CurrentUser 方法或对窗体、查询或表的引用。 此外,字段的有效性规则不能包含对其他字段的引用。 记录,表达式可以包括该表中的字段的引用。
对于表字段和记录,您可以还设置这些属性在 Visual Basic 中使用 DAO 有效性规则 属性。
Microsoft Access 根据字段的数据类型自动验证值;例如,Access 不允许在数字字段中显示文本。 您可以设置通过使用 有效性规则 属性是更具体的规则。
如果设置 ValidationRule 属性,但未设置 ValidationText 属性,则违反验证规则时,Access 将显示一条标准错误消息。 如果设置 ValidationText 属性,则输入的文本将显示为错误消息。
例如,当为新员工添加记录时,可以输入 ValidationRule 属性,要求员工 “StartDate” 字段中的值介于公司的成立日期和当前日期之间。 如果输入的日期不在此范围内,您可以显示 有效性文本 属性消息:"开始日期不正确。
如果通过从字段列表中拖动字段来创建控件,该字段的验证规则将保持有效,尽管该规则不会显示在属性表上的控件的 ValidationRule 属性框中。 这是因为绑定到该字段的控件将继承字段的有效性规则。
控件、字段及记录的有效性规则的应用方式如下:
编辑数据且焦点离开字段或控件时,将应用为字段和控件设置的验证规则。
在移动到其他记录时,将应用记录的有效性规则。
如果一个字段及一个与该字段绑定的控件都创建了有效性规则,在编辑数据并且焦点离开控件时将同时应用这两个有效性规则。
下表包含了 有效性规则 和 有效性文本 属性的表达式示例。
ValidationRule 属性 | ValidationText 属性 |
---|---|
<> 0 |
输入项必须是非零值。 |
> 1000 Or Is Null |
输入项必须为空或大于 1000。 |
Like "A????" |
条目必须为 5 个字符,以字母 A 开头。 |
>= #1/1/96# And <#1/1/97# |
输入项必须是 1996 年中的日期。 |
DLookup("CustomerID", "Customers", "CustomerID = Forms!Customers!CustomerID") Is Null |
输入项必须是唯一的“客户ID”(域聚合函数只允许在窗体级的有效性中使用)。 |
如果为字段创建验证规则,Access 通常不允许在字段中存储 Null 值。 如果要允许 Null 值,请添加到 "Is Null"
验证规则中,如 中所示 "<> 8 Or Is Null"
,并确保 “必需” 属性设置为“否”。
不能为 Access (外部创建的表设置字段或记录验证规则,例如 dBASE、Paradox 或 SQL Server) 。 对于这些类型的表,只能为控件创建有效性规则。
示例
下面的示例为某个字段创建了一个有效性规则,只允许输入大于 65 的数值。 如果输入了一个小于 65 的数字,将显示一条消息。 属性是使用 SetFieldValidation 函数设置的。
Dim strTblName As String, strFldName As String
Dim strValidRule As String
Dim strValidText As String, intX As Integer
strTblName = "Customers"
strFldName = "Age"
strValidRule = ">= 65"
strValidText = "Enter a number greater than or equal to 65."
intX = SetFieldValidation(strTblName, strFldName, _
strValidRule, strValidText)
Function SetFieldValidation(strTblName As String, _
strFldName As String, strValidRule As String, _
strValidText As String) As Integer
Dim dbs As Database, tdf As TableDef, fld As Field
Set dbs = CurrentDb
Set tdf = dbs.TableDefs(strTblName)
Set fld = tdf.Fields(strFldName)
fld.ValidationRule = strValidRule
fld.ValidationText = strValidText
End Function
以下示例使用 SetTableValidation 函数设置记录级验证,以确保 EndDate 字段中的值位于 StartDate 字段中的值之后。
Dim strTblName As String, strValidRule As String
Dim strValidText As String
Dim intX As Integer
strTblName = "Employees"
strValidRule = "EndDate > StartDate"
strValidText = "Enter an EndDate that is later than the StartDate."
intX = SetTableValidation(strTblName, strValidRule, strValidText)
Function SetTableValidation(strTblName As String, _
strValidRule As String, strValidText As String) _
As Integer
Dim dbs As Database, tdf As TableDef
Set dbs = CurrentDb
Set tdf = dbs.TableDefs(strTblName)
tdf.ValidationRule = strValidRule
tdf.ValidationText = strValidText
End Function
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。