Sign in with Microsoft
Sign in or create an account.
使用驗證規則限制資料輸入

您可以使用驗證規則,在您輸入資料時進行檢查或驗證 Access 桌面資料庫中的資料。 您可以使用運算式建立器來協助您正確地設定規則格式。 驗證規則可以設定在資料表的 [設計] 或資料表的 [資料工作表] 檢視中。 在 Access 中有三種類型的驗證規則︰

1. 欄位驗證規則   :您可以使用欄位驗證規則,指定所有有效欄位值必須符合的準則。 除非您在函數中使用目前的欄位,否則您不需要將該欄位指定為規則的一部分。  使用輸入遮罩能讓幫助您遵守欄位中字元類型的輸入限制。 例如,日期欄位可能有驗證規則不允許過去的值。

快速範例:

不允許過去的日期值:>=Date()

通常會接受的電子郵件格式:Is Null OR ((Like "*?@?*.?*") AND (Not Like "*[ ,;]*"))

小於或等於 5 的數字:<=5

貨幣欄位不能為負數:>=0

限制字串中的字元數:Len([StringFieldName])<100

顯示在 Access 資料表設計工具中的欄位​​驗證規則

2. 記錄驗證規則   :您可以使用記錄驗證規則,指定所有有效記錄都必須滿足的條件。 您可以使用記錄驗證規則來跨欄位比較值。 例如,一個記錄有兩個日期欄位,而一個欄位的值必須永遠早於另一個欄位的值 (例如:[開始日期] 早於 [結束日期])。

快速範例:

確定結束日期不會早於開始日期:[End Date]>=[Start Date]

輸入的要貨日期不能晚於訂單日期後的 30 日:[RequiredDate]<=[OrderDate]+30

Access 資料表設計工具中的資料表​驗證規則。

3. 驗證表單   :您可以使用表單控制項的 [驗證規則] 屬性,指定為該控制項輸入的所有值必須符合的準則。 [驗證規則] 控制項屬性的運作就如同 [欄位驗證規則]。 通常,無論用於何處,如果規則僅適用於該表單而不是資料表的話,您會使用表單驗證規則而不是欄位驗證規則。

本文內容

概觀

本文說明如何在資料表欄位和表單控制項使用驗證規則及驗證文字。 驗證規則是一種限制資料表欄位或表單控制項 (例如文字方塊) 輸入的方法。 驗證文字可讓您提供訊息,協助使用者知道輸入的值是否有效。

輸入資料時,Access 會檢查輸入的資料是否違反驗證規則,如果是的話,就不會接受輸入的資料,同時 Access 會顯示訊息。

Access 提供數種方式來限制輸入:

  • 資料類型   每個資料表欄位都有一個資料類型,用於限制使用者可輸入的內容。 例如,「日期/時間」欄位只接受日期和時間,「貨幣」欄位只接受貨幣資料,依此類推。

  • 欄位屬性   某些欄位屬性會限制資料輸入。 例如,欄位的 [欄位大小] 屬性會限制輸入的資料量。

    您也可以使用 [驗證規則] 屬性來要求特定的值,並用 [驗證文字] 屬性來通知使用者任何錯誤。 例如,在 [驗證規則] 屬性中輸入如 >100 And <1000 的規則,可強制使用者輸入介於 100 至 1,000 之間的值。 [結束日期]>=[開始日期] 這樣的規則會強制使用者輸入等於開始日期或之後的結束日期。 在 [驗證文字] 屬性中輸入文字,例如「請輸入介於 100 至 1,000 的值」或「輸入的結束日期必須在開始日期當天或之後」,即可在使用者輸入錯誤時通知使用者,並告知如何修正錯誤。

  • 輸入遮罩   您可以使用輸入遮罩強制使用者以特定方式輸入值,藉此驗證資料。 例如,輸入遮罩可強制使用者以歐洲格式輸入日期,如 2007.04.14。

這些驗證資料的方法可以單獨使用或組合使用。 資料類型不是選用的,會提供最基本的資料驗證類型。

如需資料類型、欄位大小和輸入遮罩的詳細資訊,請參閱資料類型與欄位屬性簡介

驗證規則的類型

您可以建立兩種基本類型的驗證規則:

  • 欄位驗證規則   使用欄位驗證規則,在您離開欄位時檢查您在欄位中輸入的值。 例如,假設有一個日期欄位,而您在該欄位的 [驗證規則] 屬性中輸入了 >=#01/01/2010#。 您的規則會要求使用者輸入 2010 年 1 月 1 日這個日期或之後的日期。 如果您輸入的日期早於 2010年,然後嘗試將焦點放在另一個欄位上,Access 會阻止您離開目前的欄位,直到您解決問題為止。

  • 記錄驗證規則   使用記錄驗證規則來控制何時要儲存記錄 (資料表中的資料列)。 與欄位驗證規則不同,記錄驗證規則會參照同一資料表中的其他欄位。 當您需要根據另一個欄位中的值來檢查某欄位中的值時,可以建立記錄驗證規則。 例如,假設公司要求您在 30 天內發貨,如果未在該時間內發貨,則必須將部分購買價格退還給您的客戶。 您可以定義記錄驗證規則,例如 [RequiredDate]<=[OrderDate]+30,以確保別人未輸入太久之後的發貨日期 (RequiredDate 欄位中的值)。

如果驗證規則的語法看來很怪異,請參閱可以在驗證規則中輸入的內容一節中的語法說明及範例驗證規則。

可以使用驗證規則的位置

您可以針對資料表欄位及表單控制項定義驗證規則。 您定義資料表規則時,那些規則會在您匯入資料時套用。 若要新增驗證規則至資料表,您需要開啟資料表,然後使用功能區 [欄位] 索引標籤上的命令。 若要新增驗證規則至表單,可以在 [版面配置檢視] 中開啟表單,然後將規則新增至個別控制項的屬性。

新增驗證規則至資料表一節中的步驟說明如何新增驗證規則至資料表欄位。 新增驗證規則至表單上的控制項一節 (本文稍後) 中的步驟說明如何將規則新增至個別控制項的屬性。

可以在驗證規則中輸入的內容

驗證規則可以包含運算式 (傳回單一值的函數)。 您可以使用運算式來執行計算、操控字元或測試資料。 驗證規則運算式會測試資料。 例如,運算式可以檢查一連串值中的其中一個值,例如「東京」Or「莫斯科」Or「巴黎」Or「赫爾辛基」。 運算式也可以執行數學運算。 例如,運算式 <100 會強制使用者輸入小於 100 的值。 運算式 ([訂單日期]-[出貨日期]) 會計算訂單與出貨日期之間經過的天數。

如需有關運算式的詳細資訊,請參閱建立運算式一文。

頁面頂端

新增驗證規則至資料表

您可以新增欄位驗證規則及/或記錄驗證規則。 欄位驗證規則會檢查欄位中輸入的資料,並在焦點離開欄位時套用規則。 記錄驗證規則會檢查一或多個欄位的資料輸入,並在焦點離開欄位時套用規則。 通常,記錄驗證規則會比較二或多個欄位的值。

附註: 下列欄位類型不支援驗證規則:

  • 自動編號

  • OLE 物件

  • 附件

  • 複製編號

建立欄位驗證規則

  1. 選取要驗證的欄位。

  2. 在 [欄位] 索引標籤上,按一下 [欄位驗證] 群組中的 [驗證],然後按一下 [欄位驗證規則]。

  3. 使用 [運算式建立器] 建立規則。 如需使用 [運算式建立器] 的詳細資訊,請參閱使用 [運算式建立器] 一文。

建立訊息以顯示欄位輸入無效

  1. 請選取需要訊息通知輸入無效的欄位。 欄位應該都已經有驗證規則。

  2. 在 [欄位] 索引標籤上,按一下 [欄位驗證] 群組中的 [驗證],然後按一下 [欄位驗證訊息]。

  3. 輸入適當的訊息。 例如,如果驗證規則是 >10,該訊息可能會是「輸入小於 10 的值」。

如需欄位驗證規則和訊息的一些範例,請參閱驗證規則參考資料一節。

建立記錄驗證規則

  1. 開啟要驗證記錄的資料表。

  2. 在 [欄位] 索引標籤上,按一下 [欄位驗證] 群組中的 [驗證],然後按一下 [記錄驗證規則]。

  3. 使用 [運算式建立器] 建立規則。 如需使用 [運算式建立器] 的詳細資訊,請參閱使用 [運算式建立器] 一文。

建立訊息以顯示記錄輸入無效

  1. 請開啟需要訊息通知輸入無效的資料表。 資料表應該都已經有記錄驗證規則。

  2. 在 [欄位] 索引標籤上,按一下 [欄位驗證] 群組中的 [驗證],然後按一下 [記錄驗證訊息]。

  3. 輸入適當的訊息。 例如,如果驗證規則是 [開始日期]<[結束日期],該訊息可能會是「開始日期必須在結束日期之前」

頁面頂端

根據新的驗證規則測試現有的資料

如果您新增驗證規則至現有的資料表,您可能會想要測試規則,以檢查現有的資料是否有效。

  1. 在 [設計檢視] 中開啟您要測試的資料表。

    在 [設計] 索引標籤上的 [工具] 群組中,按一下 [測試驗證規則]。

  2. 按一下 [是],關閉通知訊息並開始測試。

  3. 如果提示您儲存資料表,請按一下 [是]。

  4. 您繼續進行時,可能會看到多種其他的通知訊息。 請閱讀各訊息中的指示,然後視情況按一下 [是] 或 [否],以完成或停止測試。

頁面頂端

新增驗證規則至表單上的控制項

您可以使用表單控制項的 [驗證規則] 及 [驗證文字] 屬性,來驗證輸入該控制項的資料,並協助使用者輸入正確的資料。

提示:  如果您要使用功能區上的其中一個 [表單] 命令,從資料表自動建立表單,基礎資料表中欄位的任何驗證都會由表單上對應的控制項繼承。

控制項的驗證規則可以異於其所繫結之資料表欄位的驗證規則。 如果您要讓表單比資料表更具限制性,這會非常有用。 套用表單規則後,會套用資料表規則。 如果資料表比表單更具限制性,為資料表欄位定義的規則會優先。 如果規則互斥,這些規則會使您無法輸入任何資料。

例如,假設您套用下列規則至資料表的日期欄位:

<#01/01/2010#

但接著您將此規則套用到繫結至日期欄位的表單控制項:

>=#01/01/2010#

日期欄位現在要求早於 2010 年的值,但表單控制項要求 2010 年或該年後的日期,因此導致您無法輸入任何資料。

建立控制項的驗證規則

  1. 以滑鼠右鍵按一下要變更的表單,然後按一下 [版面配置檢視]。

  2. 以滑鼠右鍵按一下要變更的控制項,然後按一下 [屬性],開啟控制項的屬性表。

  3. 按一下 [全部] 索引標籤,然後在 [驗證規則] 屬性方塊中輸入驗證規則。

    提示: 按一下 [建立] 按鈕啟動 [運算式建立器]。

    如需使用 [運算式建立器] 的詳細資訊,請參閱使用 [運算式建立器] 一文。

  4. 在 [驗證文字] 屬性方塊中輸入訊息。

頁面頂端

驗證規則參考資料

驗證規則使用 Access 運算式語法。 如需運算式的詳細資訊,請參閱運算式簡介一文。

驗證規則和驗證文字範例

驗證規則

驗證文字

<>0

輸入非零的值。

>=0

值必須是零或更大的值。

-or-

您必須輸入正值。

0 or >100

值必須為 0 或大於 100。

BETWEEN 0 AND 1

輸入具有百分比符號的值。 (用於將數值儲存為百分比的欄位)。

<#01/01/2007#

輸入 2007 年之前的日期。

>=#01/01/2007# AND <#01/01/2008#

日期必須在 2007 年內。

<Date()

出生日期不能是未來的日期。

StrComp(UCase([LastName]),
[LastName],0) = 0

在名為 [姓氏] 欄位中的資料必須使用大寫。

>=Int(Now())

輸入今天的日期。

M Or F

輸入 M 代表男性,F 代表女性。

LIKE "[A-Z]*@[A-Z].com" OR "[A-Z]*@[A-Z].net" OR "[A-Z]*@[A-Z].org"

輸入有效的 .com、.net 或 .org 電子郵件地址。

[要貨日期]<=[訂單日期]+30

輸入的要貨日期不能晚於訂單日期後的 30 日。

[結束日期]>=[開始日期]

輸入的結束日期必須等於或晚於開始日期。

一般範例驗證規則運算子的語法範例

運算子

函數

範例

NOT

測試相反值。 用在 IS NOT NULL 以外的任何比較運算子之前。

NOT > 10 (等於 <=10)。

IN

測試等於清單中現有成員的值。 比較值必須是以括號括住並用逗號分隔的清單。

IN ("東京","巴黎","莫斯科")

BETWEEN

測試值範圍。 您必須使用低與高兩個比較值,且必須以 AND 分隔符號區隔那些值。

BETWEEN 100 AND 1000 (等於 >=100 AND <=1000)

LIKE

符合 [文字] 和 [備忘] 欄位中的圖樣字串。

LIKE "Geo*"

IS NOT NULL

強制使用者在欄位中輸入值。 這與將 [必須有資料] 欄位屬性設為 [是] 是一樣的。 不過,當您啟用 [必須有資料] 屬性而使用者未輸入值時,Access 會顯示不太友善的錯誤訊息。 一般而言,如果您使用 IS NOT NULL 且在 [驗證文字] 屬性中輸入友善的訊息,資料庫會更容易使用。

IS NOT NULL

AND

指定驗證規則的所有部分必須為真。

>= #01/01/2007# AND <=#03/06/2008#

附註: 您也可以使用 AND 來結合驗證規則。 例如:NOT "UK" AND LIKE "U*"

OR

指定驗證規則的部分必須為真。

一月 OR 二月

<

小於。

<=

小於或等於。

>

大於。

>=

大於或等於。

=

等於。

<>

不等於。

在驗證規則中使用萬用字元

您可以在驗證規則中使用萬用字元。 請記住,Access 支援兩組萬用字元:ANSI-89 與 ANSI-92。 這些標準各自使用不同的萬用字元組。

根據預設,所有的 .accdb 和 .mdb 檔案使用 ANSI-89 標準。

您可以使用下列步驟,將資料庫的 ANSI 標準變更為 ANSI-92:

  1. 按一下 [檔案] 索引標籤上的 [選項]。

  2. 按一下 [Access 選項] 對話方塊中的 [物件設計師]。

  3. 在 [查詢設計] 區段的 [與 SQL Server 相容語法 (ANSI-92)] 下,選取 [此資料庫]。

如需使用萬用字元和 SQL 之 ANSI 標準的詳細資訊,請參閱 Access 萬用字元參考資料一文。

頁面頂端

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Office Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×