CheckBox.ValidationRule 屬性 (Access)

使用 ValidationRule 屬性來指定輸入記錄、欄位或控制項之資料的需求。 當資料輸入違反 ValidationRule 設定時,您可以使用 ValidationText 屬性來指定要對使用者顯示的訊息。 讀取/寫入的 String

語法

運算式ValidationRule

表達 代表 CheckBox 物件的變數。

註解

輸入運算式 ValidationRule 屬性設定及 ValidationText 屬性設定的文字。 ValidationRule 屬性設定的最大長度為 2048年個字元。 ValidationText 屬性設定的最大長度為 255 個字元。

如果控制項,您可以設定 ValidationRule 屬性為任何有效的運算式。 對於欄位和記錄驗證規則,運算式不能包含使用者定義函數、網域匯總或彙總函式、 Eval 函數、 CurrentUser 方法或表單、查詢或資料表的參考。 此外,欄位驗證規則不能包含其他欄位的參照。 記錄,運算式可以包含該資料表中的欄位的參照。

對於資料表欄位及記錄,您也可以設定這些屬性在 Visual Basic 中使用 DAO ValidationRule 屬性。

注意事項

ValidationRuleValidationText屬性不適用於選項群組中的核取方塊、選項按鈕或切換按鈕控制項。 他們只適用於選項群組本身。

Microsoft Access 會根據欄位的資料類型自動驗證值;例如,Access 不允許數值欄位中的文字。 您可以設定使用 ValidationRule 屬性更具體的規則。

如果您設定 ValidationRule 屬性,但未設定 ValidationText 屬性,則 Access 會在違反驗證規則時顯示標準錯誤訊息。 如果您設定 ValidationText 屬性,您輸入的文字會顯示為錯誤訊息。

例如,為新員工新增記錄時,您可以輸入 ValidationRule 屬性,要求員工 的 StartDate 字 段中的值落在公司的成立日期和目前日期之間。 如果輸入的日期不在此範圍,您可以顯示 ValidationText 屬性訊息: 「 開始日期是不正確 」。

如果您藉由從欄位清單拖曳欄位來建立控制項,欄位的驗證規則仍會維持作用中,但不會顯示在屬性工作表上控制項的 ValidationRule 屬性方塊中。 這是因為控制項繫結至該欄位的欄位的驗證規則繼承而來。

控制項、欄位及記錄驗證規則的套用方式如下:

  • 當您編輯資料且焦點離開欄位或控制項時,會套用您為欄位和控制項設定的驗證規則。

  • 在移至另一筆記錄時會套用記錄的驗證規則。

  • 如果為欄位及與該欄位結合的控制項都建立了驗證規則,則在編輯資料及焦點離開控制項時會套用這兩個驗證規則。

下表包含了 ValidationRuleValidationText 屬性的運算式範例。

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 輸入項必須是唯一的 CustomerID (在表單層級的驗證之下才允許使用範圍彙總函數)

如果您為欄位建立驗證規則,Access 通常不允許在 欄位中儲存 Null 值。 如果您想要允許 Null 值,請將 新 "Is Null" 增至驗證規則,如 中 "<> 8 Or Is Null" 所示,並確定 Required 屬性已 設定為 [否]。

您無法針對在 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 支援與意見反應