運算式語法指南

使用 Microsoft Access 時,有些情況會需要您直接使用不在資料中的值。例如,您可能需要計算某份訂單的營業稅或訂單本身的總價值。您可以使用運算式來計算這些值。

為了進行運算,您必須先以正確的語法撰寫運算式。語法是一套以正確方式組合運算式中字詞與符號的規則。

您可以將這想像成:若要 Access 執行某項工作,您就必須使用它的語言。舉例來說,假設您想要告訴 Access:「查看 [客戶] 資料表的 [生日] 欄位,並告訴我客戶出生的年份。」那麼您可以將運算式寫成:DatePart("yyyy",[客戶]![生日])。這個運算式由 DatePart 函數及 "yyyy" 和 [客戶]![生日] 這兩個引數所組成。

現在就讓我們更詳細地解析這個運算式。

運算式範例

1. DatePart 是一個能檢查日期,並傳回特定部分的函數。

提示:  從 Access 2010 開始,運算式建立器都具有 IntelliSense,可以讓您查看運算式需要的引數。

2. interval 引數會告訴 Access 要傳回日期的哪個部分,在這個例子中,"yyyy" 告訴 Access 您只想要傳回日期中的年份。

3. date 引數會告訴 Access 要找的是哪裡的日期值,在這個例子中,[客戶]![生日] 告訴 Access 要尋找 [客戶] 資料表 [生日] 欄位中的日期。

如您所見,Access 運算式使用的語言乍看之下有些難以閱讀,不過在正確了解運算式語法,並稍加練習之後,就容易多了。

以下是幾個您在嘗試撰寫運算式前應該了解的重要概念。本文將介紹使用正確語法所需要了解的概念,並說明運算式使用的語法。

本文不討論結構化查詢語言 (SQL) 語法,也無法做為 Visual Basic for Applications (VBA) 語法指南。

本文內容

簡介

物件、集合和屬性

識別碼

函數、運算子和常數

簡介

若要建立運算式,您需要使用函數、運算子和常數來結合識別碼。任何有效運算式都必須含有至少一種函數或一項識別碼,且可以同時包含常數或運算子。您也可以將運算式當做另一個運算式的一部分 (通常是做為函數中的引數)。

  • 運算式中的識別碼   :運算式中的識別碼一般為「[集合名稱]![物件名稱].[屬性名稱]」的形式。

    附註: 您只需要在識別碼中,指定足夠讓它成為運算式中唯一識別碼的項目即可。識別碼不常以 [物件名稱] 的形式出現。

  • 運算式中的函數   :使用函數的運算式一般會是「函數(引數, 引數)」的形式,其中一個引數通常會是識別碼或另一個運算式。

    附註: 部分函數並不需要引數。

    在您使用特定函數前,請再次查閱該函數語法的相關說明文章。

  • 運算式中的運算子   :使用運算子的運算式一般會是「識別碼 運算子 識別碼」的形式。關於此形式的例外狀況,請參閱運算子一節所列表格的詳細說明。

  • 運算式中的常數   :使用常數的運算式一般會是「識別碼 比較運算子 常數」的形式。

頁面頂端​​

物件、集合和屬性

Access 資料庫中所有資料表、查詢、表單、報表及欄位都可以稱為個別的「物件」。每個物件都有其名稱,有些物件可能已經完成命名 (例如以 Microsoft Office Access 連絡人範本為基礎建立之資料庫的 [連絡人] 資料表),若您建立了新的物件,請為它命名。

一組內容全都為某種特定物件類型的組合稱為「集合」。舉例來說,一個資料庫中所有資料表的組合為一個集合。您資料庫中的物件可能屬於某個集合,同時也是含有其他物件的集合。例如,資料表是一個包含欄位物件的集合。

物件擁有「屬性」,屬性會描述物件的特性,並提供變更這些特性的方法。例如,查詢物件具有的 [預設檢視方法] 屬性,能描述並讓您指定執行該查詢時的顯示方式。

下圖說明集合、物件和屬性之間的關係:

集合、物件及屬性的關係

1. 一個集合

2. 一個物件

3. 一個屬性

頁面頂端​​

識別碼

在運算式中使用物件、集合或屬性時,您需要使用「識別碼」來參照至該元素。識別碼會包含您要識別之元素的名稱以及它所屬元素的名稱。舉例來說,一個欄位的識別碼會包括欄位名稱,以及該欄位所屬資料表的名稱。在前述運算式範例中,這類識別碼的例子即為:[客戶]![生日]

某些情況下,元素的名稱即可當做識別碼。當元素名稱在您建立的運算式內容中為唯一值時,此規則即會成立,識別碼的其他部分則由上下文進行推斷。舉例來說,如果您設計的查詢中只使用一個資料表,那麼欄位名稱本身即可當成識別碼使用,因為資料表中的欄位名稱勢必為該資料表中的唯一值。由於只使用一個資料表,在脈絡上,您於查詢中參照的任何欄位識別碼都是暗指該資料表名稱而言。

在其他情況下,您必須明確指出識別碼的各部分才能讓參照發揮作用。若識別碼不是運算式中的唯一值,此規則即會成立。當所指模稜兩可時,您就必須明確指定識別碼的各部分,讓它成為上下文脈絡中的唯一值。例如,假設您設計的查詢中使用了兩張資料表:[產品] 和 [訂單],且這兩者都各自有一個叫做 [產品識別碼] 的欄位。在這種情況下,您在查詢中用來參照至任一 [產品識別碼] 欄位的識別碼除了欄位名稱之外,還必須再加上資料表的名稱。例如:[產品]![產品識別碼]

識別碼運算子   :在識別碼中,您可以使用三種運算子。

  • 驚嘆號運算子 (!)

  • 點運算子 (.)

  • 方括號運算子 ([ ])

這些運算子的使用方法為:以方括號將識別碼的各部分括起來,然後使用驚嘆號或點運算子進行連接。例如,[員工] 資料表中 [姓氏] 欄位的識別碼可以表示為 [員工]![姓氏],驚嘆號運算子會告訴 Access,在運算子後方的物件屬於運算子前方所述之集合。在這個例子中,[姓氏] 是一個屬於 [員工] 集合的欄位物件,而後者本身也是一個資料表物件。

附註: 嚴格來說,您並不必每次都以方括號括住部分或是整個識別碼。如果識別碼中沒有空格或其他特殊字元,Access 會在讀取運算式時自動加上括號。不過,由您自行輸入括號是個良好習慣,可以協助您避免錯誤發生,也能讓您一眼認出運算式中哪些部分是識別碼。

頁面頂端​​

函數、運算子和常數

建立運算式不只需要識別碼,您還需要執行某種動作。您可以使用函數、運算子和常數來執行運算式中的動作。

函數

函數是一種您可以在運算式中使用的程序。有些函數 (例如 Date) 不需要輸入任何項目就能運作。不過,大部分的函數都需要您輸入「引數」。在本文開頭提到的範例中,DatePart 函數使用了兩個引數:一個是 interval 引數 (其值為 "yyyy"),以及 date 引數 (其值為 [客戶]![生日])。DatePart 函數至少需要兩個引數 (interval 和 date),但最多可以接受四個引數。

附註: 當一個函數中有一個以上的引數時,請以逗號將引數隔開。

下列清單列出一些運算式常用的函數。如需函數使用語法的詳細資訊,請按一下各函數連結。

  • DateDate 函數可在運算式中插入目前系統的日期。常與 Format 函數一起使用,也會搭配含有日期/時間資料之欄位的欄位識別碼。

  • DatePartDatePart 函數可用來判斷或擷取日期的一部分,該日期通常取自欄位識別碼,但有時會是由其他函數 (如 Date) 傳回的日期值。

  • DateDiffDateDiff 函數可用來判斷兩個日期間的差距,通常其中一個日期會取自欄位識別碼,而另一個則是使用 Date 函數取得的日期。

  • FormatFormat 函數可用來將格式設定套用至識別碼或是其他函數得出的結果。

  • IIfIIf 函數可以將運算式評估為 True 或 False,然後在運算式評為 True 時傳回一個指定的值,並在評為 False 時傳回另一個指定值。

  • InStrInStr 函數可用來搜尋某個字元或某字串在另一個字串中的位置。函數所搜尋的字串通常取自欄位識別碼。

  • LeftMidRight:這些函數可以用來擷取字串中的字元,依序分成從最左邊的字元開始擷取 (Left)、從中間特定位置開始擷取 (Mid),或是從最右邊的字元開始擷取 (Right)。通常會搭配 InStr 函數使用。這些函數用來擷取字元的字串通常取自欄位識別碼。

如需函數類別清單,請參閱函數 (依類別排列) 一文。

運算子

運算子是用來表示運算式中,其他元素之間特定算數或邏輯關係的字詞或符號。運算子可以是:

  • 算數運算子,例如加號 (+)。

  • 比較運算子,例如等號 (=)。

  • 邏輯運算子,例如 Not

運算子通常用來表示兩個識別碼之間的關係。下列各表將說明 Access 運算式中可用的運算子。

算術運算子   

算術運算子可用來計算兩個或多個數字的值,或者將數字的正號變成負號。

運算子

目的

範例

+

將兩個數目相加。

[小計]+[營業稅]

-

將兩個數字相減求其差值,或用於表示數字為負值。

[價格]-[折扣]

*

將兩個數字相乘。

[數量]*[價格]

/

將第一個數字除以第二個數字。

[合計]/[項目計數]

\

將兩個數字四捨五入為整數,將第一個數字除以第二個數字,再將結果捨去為整數。

[已登錄的數目]\[會議室的數目]

Mod

將第一個數字除以第二個數字,然後只傳回餘數。

[已登錄的數目] Mod [會議室的數目]

^

傳回指數乘幕的數字。

數字 ^ 指數

比較運算子   

您可以使用比較運算子來比較值,並傳回 True、False 或 Null (未知值) 其中一種結果。

運算子

目的

<

判斷第一個值是否小於第二個值。

<=

判斷第一個值是否小於或等於第二個值。

>

判斷第一個值是否大於第二個值。

>=

判斷第一個值是否大於或等於第二個值。

=

判斷第一個值是否等於第二個值。

<>

判斷第一個值是否不等於第二個值。

在所有案例中,只要第一個值或第二個值為 Null,則結果也為 Null。這是因為 Null 代表未知值,所以任何與 Null 比較的結果也會是未知的。

邏輯運算子   

您可以使用邏輯運算子來結合兩個值,然後傳回 True、False 或 Null 其中一種結果。邏輯運算子也稱為布林運算子。

運算子

用法

描述

And

運算式1 And 運算式2

當運算式1 和運算式2 皆為 True 時,結果為 True。

Or

運算式1 Or 運算式2

當運算式1 或運算式2 任何一個為 True 時,結果為 True。

Eqv

運算式1 Eqv 運算式2

當運算式1 和運算式2 皆為 True,或運算式1 和運算式2 皆為 False 時,結果為 True。

Not

Not 運算式

運算式不是 True 時,結果為 True。

Xor

運算式1 Xor 運算式2

當運算式1 為 True,或運算式2 為 True,但並非兩者同時為 True 時,結果為 True。

串連運算子   

您可以使用串連運算子,將兩個文字值結合成一個字串。

運算子

用法

描述

&

字串1 & 字串2

將兩個字串結合成為一個字串。

+

字串1 + 字串2

將兩個字串結合成為一個字串,並且傳播 Null 值。

特殊運算子   

您可以如下表所述來使用特殊運算子。

運算子

描述

其他詳細資訊

Is NullIs Not Null

判斷值為 Null 或 Not Null。

Like "模式"

使用萬用字元運算子 ?* 來比對字串值。

Like 運算子

Between 值1 And 值2

判斷某數字或日期值是否落在範圍內。

Between...And 運算子

In(字串1,字串2...)

判斷一組字串值中是否包含某字串值。

In 運算子

常數

常數是一種您可以在運算式中使用,且不會變動的已知值。Access 中有四種常用的常數:

  • True   :表示邏輯為 True 的項目。

  • False   :表示邏輯為 False 的項目。

  • Null   :表示缺少已知的值。

  • "" (空字串)   :表示已知為空白的值。

常數可當做函數中的引數,也可用來做為運算式中準則的一部分。例如,您可以將空字串常數 ("") 當做某查詢中資料欄準則的一部分,以用來評估該資料欄的欄位值,方法是輸入 <>"" 做為準則。在這個範例中,<> 是運算子,而 "" 是常數。放在一起時表示它們會將所套用的識別碼與空字串進行比較。當識別碼的值為空字串以外的任何其他值時,運算式的結果為 True。

附註: 使用 Null 常數時請務必謹慎小心。大多數情況下,搭配使用 Null 和比較運算子得到的結果會為錯誤。如果您想要在運算式中比較 Null 和某個值,請使用 Is NullIs Not Null 運算子。

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

頁面頂端​​

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×