Access VBA教程:ValidationText属性

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

expression.ValidationText

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

说明

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

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

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

使用以下方法可以设置 ValidationRule 和 ValidationText属性:

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

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)创建的表中,不能为其字段或记录设置有效性规则。对于这些类型的表,只能为控件创建有效性规则。

VBA示例

下面的示例为某个字段创建了一个有效性规则,只允许输入大于 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

上页:Access VBA教程:ValidationRule属性 下页:Access VBA教程:Value属性

Access VBA教程:ValidationText属性

Access VBA教程:Value属性 Access VBA教程:VBE属性
Access VBA教程:Verb属性 Access VBA教程:Version属性
Access VBA教程:Vertical属性 Access VBA教程:VerticalDatasheetGridlineStyle属性
Access VBA教程:ViewChange属性 Access VBA教程:ViewsAllowed属性
Access VBA教程:Visible属性 Access VBA教程:WebOptions属性
Access VBA教程:WhatsThisButton属性 Access VBA教程:Width属性
Access VBA教程:WillContinue属性 Access VBA教程:WindowHeight属性
Access VBA教程:WindowLeft属性 Access VBA教程:WindowTop属性
Access VBA教程:WindowWidth属性 Access VBA教程:Zoom属性 (Snapshot Viewer)
Access VBA教程:RepaintObject、ShowAllRecords、Requery 和 Refresh 操作/方法的比较 Access VBA教程:DDEExecute 语句
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号