全部显示

ValidationText 属性

       

使用 ValidationText 属性可以指定当输入的数据违反了记录、字段或控件的 ValidationRule 设置时,向用户显示的消息。String 型,可读写。

expression.ValidationText

expression   必需。返回“Applies To”列表中的一个对象的表达式。

说明

复选框选项按钮切换按钮类型的控件选项组中时,ValidationRuleValidationText 属性不能应用于这些控件,而只适用于选项组本身。

对于 ValidationRule 属性,输入表达式,对于 ValidationText 属性设置,输入文本。ValidationRule 属性设置的最大长度是 2048 个字符。ValidationText 属性设置的最大长度则是 255 个字符。

对于控件,可以将 ValidationRule 属性设置为任何有效的表达式。对于字段和记录的有效性规则,表达式中不能包含用户定义的函数、域聚合函数聚合函数Eval 函数、CurrentUser 方法,另外也不能包含对窗体、查询或表的引用。此外,字段的有效性规则不能包含对其他字段的引用。对于记录,表达式则可以包含对该表中字段的引用。

使用以下方法可以设置 ValidationRuleValidationText 属性:

对于表字段及记录,也可以在 Visual Basic 中使用 DAO ValidationRule 属性来设置这些属性。

Microsoft Access 将根据字段的数据类型,自动检查数据的有效性。例如,Microsoft Access 在数值字段中不允许有文本。使用 ValidationRule 属性可以更详细地设置规则。

如果只设置了 ValidationRule 属性但没有设置 ValidationText 属性,当违反了有效性规则时,Microsoft Access 将显示标准的错误消息。如果设置了 ValidationText 属性,所输入的文本将作为错误消息显示。

例如,在添加新职员记录时,可以通过设置 ValidationRule 属性来要求雇员的“开始日期”字段的值都在公司的成立日期到当前日期之间。如果输入的日期不在这个范围内,可以显示 ValidationText 属性设置的消息:“开始日期不正确。”

如果控件是通过从字段列表中拖动字段的方式创建的,虽然字段的有效性规则没有在属性表上控件的 ValidationRule 属性框中显示,但仍然保持有效,因为与字段绑定的控件将继承该字段的有效性规则。

控件、字段及记录的有效性规则的应用方式如下:

下表包含了 ValidationRule 以及 ValidationText 属性的表达式示例:

ValidationRule 属性 ValidationText 属性
<> 0 输入项必须是非零值。
> 1000 Or Is Null 输入项必须为空值或大于 1000。
Like "A????" 输入项必须是 5 个字符并以字母 A 为打头。
>= #1/1/96# And <#1/1/97# 输入项必须是 1996 年中的日期。
DLookup("客户ID", "客户", "客户ID = Forms!客户!客户ID") Is Null 输入项必须是唯一的“客户ID”(域聚合函数只允许在窗体级的有效性中使用)。

如果为某个字段创建有效性规则,Microsoft Access 通常不允许 Null 值存储在该字段中。如果要使用 Null 值,必须将 “Is Null” 添加到有效性规则中,如“<> 8 Or Is Null”,并确保 Required 属性已经设置为“否”。

在非 Microsoft 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 函数来设置记录级的有效性规则,以确保“结束日期”字段中的值比“开始日期”字段中的值晚。

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