運算式簡介

您可以在 Microsoft Access 中用運算式進行多種工作,像是進行數學計算、合併或擷取文字,或是驗證資料。 本文提供運算式的相關背景資訊 ,包括使用時機、與 Microsoft Excel 公式相互比較,以及其組成部分等等。

本文內容


運算式概觀

運算式是由下列部分或全部項目組合而成:會導出一個值的內建或使用者定義函數 (函數程序:傳回值且能夠用於運算式的程序。使用 Function 陳述式可以宣告函數,使用 End Function 陳述式可以結束函數。)識別項 (識別字 (運算式):參照欄位、控制項或屬性值的運算式元素。例如,Forms![Orders]![OrderID] 是參照 Orders 表單上 OrderID 控制項值的識別字。)運算子 (運算子:指定運算式中執行之計算類型的符號。有數學、比較、邏輯及參照四種運算子。)常數 (常數:不計算因而不變更的值。例如,數字 210 及文字 "Quarterly Earnings" 是常數。運算式或運算式得出的結果值不是常數。)

運算式的組成

例如,以下運算式包含所有四個組成元素:

=Sum([購買價格])*0.08

在此範例中,Sum() 是內建函數,[購買價格] 是識別項,* 是數學運算子,而 0.08 是常數。這個運算式可以用於表單尾或報表尾的文字方塊中,以計算一組產品的營業稅。

運算式可能比這個範例複雜得多,也可能簡單得多。例如,這個布林值 (布林值:可求得 True (非零) 或 False (0) 的運算式。您可以使用關鍵字 True 與 False 來分別提供值 -1 與 0。欄位資料類型 Yes/No 是布林值,Yes 的值為 - 1。)運算式只包含一個運算子和一個常數:

>0

這個運算式會在與大於 0 的數字比較時,傳回 True,而在與小於 0 的數字比較時,傳回 False。 您可以在控制項或資料表欄位的 [驗證規則] 屬性中使用這個運算式,以確保只輸入正數值。

在 Access 中,很多地方都可以使用運算式來執行計算、控制字元或測試資料。資料表、查詢、表單、報表和巨集都有接受運算式的屬性。例如,您可以在控制項的 [控制項資料來源][預設值] 屬性中使用運算式。也可以在資料表欄位的 [驗證規則] 屬性中使用運算式。此外,當您為事件程序或模組撰寫 Microsoft Visual Basic for Applications (VBA) 程式碼時,通常可以使用與在 Access 物件 (例如資料表或查詢) 中使用之運算式類似的運算式。

 附註    如需關於運算式組成的詳細資訊,請參閱本文稍後的運算式的組成一節。

頁首 頁首

為何使用運算式?

在 Access 中,您可以使用運算式進行下列任何一項作業:

  • 計算並非直接存在資料中的值。 您可以計算資料表和查詢內欄位中的值,也可以計算表單和報表上控制項中的值。
  • 為資料表欄位或表單或報表上的控制項設定預設值。 每當您開啟資料表、表單或報表時,就會顯示這些預設值。
  • 建立驗證規則。 驗證規則會控制使用者可以輸入欄位或控制項中的值。
  • 指定查詢的準則。

Access 中最常見的一種運算式使用方式,就是計算並非直接存在資料中的值。 例如,您可以在資料表或查詢中建立計算明細項目合計的欄,然後將該值用於表單或報表中。 在資料表或查詢中,此類計算所產生的欄稱為計算欄位。 例如,查詢中的下列運算式會計算加上折扣的明細項目合計:

ExtendedPrice: CCur([訂單詳細資料].[單價]*[數量]*(1-[折扣])/100)*100

這個運算式會將產生的欄或計算欄位命名為 ExtendedPrice

當您需要對兩個以上資料表欄位中的資料加以計算或執行作業時,就可以建立計算欄位。 例如,許多資料表會將名字和姓氏儲存於不同的欄位。 如果想合併這些名字和姓氏,並將結果顯示在一個欄位中,可以在資料表或查詢中建立計算欄位。

合併名字和姓氏的計算欄位看起來會像這樣:[名字] & " " & [姓氏]。 在這裡,& 符號 (&) 會合併 [名字] 欄位中的值、一個空格字元 (以引號括住的空格) 以及 [姓氏] 欄位中的值。

您也可以用 Access 運算式為資料表欄位或控制項提供預設值。 例如,若要將某個日期欄位的預設值設定為目前日期,您可以在該欄位的 [預設值] 屬性方塊中輸入 Date()

此外,您也可以使用運算式設定驗證規則。 例如,您可以在控制項或資料表欄位中使用驗證規則,要求輸入的日期大於或等於目前日期。 在這裡,您會將 [驗證規則] 屬性方塊中的值設為 >= Date()

最後,您可以用運算式來設定查詢的準則。 例如,假設您想查看某段時間內出貨的訂單產品銷售情形。 您可以輸入準則來定義日期範圍,Access 只會傳回符合準則的列。 例如,運算式可能看起來會像這樣:

Between #2011/1/1# And #2011/12/31#

當您將準則新增到查詢中,接著執行查詢時,只會傳回符合指定日期的值。

頁首 頁首

Access 運算式和 Excel 公式比一比

Access 運算式與 Excel 公式的近似之處在於兩者使用相仿的元素產生結果。 Excel 公式和 Access 運算式都包含下列一或多個項目:

  • 識別項     在 Excel 中,識別項就是活頁簿中個別儲存格或儲存格範圍的名稱,例如 A1B3:C6Sheet2!C32。 在 Access 中,識別項則是資料表欄位的名稱 (例如 [連絡人]![名字])、表單或報表上的控制項 (例如 Forms![工作清單]![說明]),或這些欄位或控制項的屬性 (例如 Forms![工作清單]![說明].ColumnWidth)。
  • 運算子     在 Access 和 Excel 中,運算子都可以用來比較值,或進行簡單的資料計算。 例如 + (加號) 或 - (減號)。
  • 函數和引數     在 Access 和 Excel 中,函數和引數是用來完成無法只用運算子進行的工作 — 例如,您可以求出欄位中值的平均數,或將計算結果轉換為貨幣格式。 例如 SUMSTDEV,這兩者都是函數。 引數是提供資訊給函數的值。 Access 和 Excel 都有許多函數可供選擇,但程式中相似函數的名稱,有時並不相同。 例如,Excel 中的 AVERAGE 函數相當於 Access 中的 AVG 函數。
  • 常數     在 Access 和 Excel 中,常數是不會變的值 — 例如不能用運算式計算的文字或數字字串。

Access 運算式所使用的運算子和常數與 Excel 公式很相似,但 Access 運算式使用不同的識別項和函數。 Excel 公式通常只會在工作表儲存格中派上用場,而 Access 運算式在 Access 中則常會用來進行多種工作,包括下列各項工作:

  • 在表單和報表上建立計算控制項
  • 在資料表和查詢中建立計算欄位
  • 做為查詢中的準則
  • 驗證輸入欄位或表單控制項的資料
  • 在報表中群組資料

利用數學運算子,您就可以用 Access 運算式或 Excel 公式來計算數字或日期/時間的值。 例如,若要計算客戶的折扣價格,您可以使用 Excel 公式 =C2*(1-D2) 或 Access 運算式 = [單價]*(1-[折扣])

您也可以用字串運算子,用 Access 運算式或 Excel 公式來合併、分割或以其他方式操作字串。 例如,若要將名字和姓氏合併為單一字串,您可以使用 Excel 公式 =D3 & " " & D4 或 Access 運算式 = [名字] & " " & [姓氏]

頁首 頁首

運算式的組成

運算式可以包含識別項、運算子、函數和引數、常數和值。 下列各節更詳細描述這些組成項目。 這些小節中的範例也會提供運算式使用語法的簡短說明。

識別項

識別項就是欄位、屬性或控制項的名稱。 您可以在運算式中使用識別項來參照與欄位、屬性或控制項相關的值。 以 =[要求日期]-[出貨日期] 運算式為例。 這個運算式會將 [要求日期] 欄位或控制項的值減去 [出貨日期] 欄位或控制項的值。 在這個運算式中,[要求日期][出貨日期] 都是識別項。

運算子

Access 支援多種運算子,包括常見的算術運算子,例如 +-* (乘) 和 / (除)。 您也可以使用 < (小於) 或 > (大於) 等比較運算子來比較值;使用 &+ 等文字運算子來串連 (合併) 文字;使用 NotAnd 等邏輯運算子來判斷 True 或 False 值,以及使用其他 Access 特有的運算子。

函數和引數

函數是可用於運算式的內建程序。 您可以在多種作業中使用函數,例如計算值、處理文字和日期,以及摘要資料。 例如,常用的函數之一包括 Date,此函數會傳回目前日期。 使用 Date 函數的方式有很多,例如用於為資料表欄位設定預設值的運算式。 在這個範例中,每當有人新增記錄時,根據預設,欄位值就會設定為目前的日期。

有些函數需要引數。 引數就是為函數提供輸入內容的值。 如果函數需要一個以上的引數,請以逗點分隔引數。 例如,我們可以參考下列範例運算式中的 Date 函數:

=Format(Date(),"mmmm d, yyyy")

這個範例使用了兩個引數。 第一個引數為 Date() 函數,該引數會傳回目前日期。 第二個引數 ("mmmm d, yyyy") 用逗點與第一個引數分開,提供了指示 Format 函數如何設定傳回日期值格式的文字字串。 請注意,文字字串必須用引號括住。 此運算式也說明您通常可以用某個函數傳回的值做為另一個函數的引數。 在這裡,Date() 做為引數。

您可以在 <請參閱> 一節中找到有關函數和運算式語法的詳細資訊連結。

常數

常數是 Access 執行時值不會變動的項目。 TrueFalseNull 等常數經常用於運算式。 您也可以用 VBA 程式碼自行定義可用於 VBA 程序的常數。 VBA 是 Access 使用的程式設計語言。

 附註    在運算式中使用的自訂函數裡,您無法使用 VBA 常數。 例如,VBA 有用於一週各天的常數:vbSunday 代表星期日,vbMonday 代表星期一,依此類推。 上述每個常數都有對應的數值。 例如,vbSunday 的數值為 1,vbMonday 的數值為 2。 您無法在從運算式內部呼叫的自訂函數中使用這些常數, 而必須改用數值。

您可以在運算式中使用常值,例如數字 1,254 或字串 "Enter a number between 1 and 10"。您也可以使用數值,數值可以是包含正負號和小數點 (如有需要) 的一串數字。 沒果沒有加上正負號,Access 會假設數字為正值。 如果要使用負值,請加上減號 (-)。 您也可以使用科學記號標記法。 若要這麼做,請加入 "E" 或 "e" 以及指數符號 (例如 1.0E-6)。

當您使用文字字串做為常數時,請用引號括住,Access 才更能正確地解譯。 在某些情況下,Access 會為您加上引號。 例如,當您在驗證規則或查詢準則運算式中輸入文字時,Access 會自動為您的文字字串加上引號。

例如,如果您輸入「巴黎」這個字,Access 就會在運算式中顯示「巴黎」。 如果您希望運算式產生加上引號的字串,請將巢狀字串置於單 (') 引號或三組雙 (") 引號中。 例如,下列運算式是相同的:

Forms![連絡人]![城市].DefaultValue = ' "巴黎" '

Forms![連絡人]![城市].DefaultValue = " " "巴黎" " "

若要使用日期/時間值,請使用井號 (#) 將值括住。 例如,#3-7-11#、#7-Mar-11# 和 #Mar-7-2011# 都是有效的日期/時間值。 當 Access 遇到用 # 字元括住的有效日期/時間值時,會自動將值視為「日期/時間」資料類型。

頁首 頁首

運算式的範例

下表示範一些 Access 運算式,以及它們的常見使用方式:

運算式 目的
=[要求日期]-[出貨日期] 計算報表上兩個文字方塊控制項 (名稱為 [要求日期] 和 [出貨日期]) 中資料值之間的差異。
Date() 將「日期/時間」資料表欄位的預設值設為目前日期。
ExtendedPrice: CCur([訂單詳細資料].單價*[數量]*(1-[折扣])/100)*100 在查詢中建立名為 ExtendedPrice 的計算欄位。
Between #2011/1/1# And #2011/12/31# 指定查詢中「日期/時間」欄位的準則。
=[訂單子表單].Form!OrderSubtotal 傳回訂單表單之訂單子表單上 OrderSubtotal 控制項的值。
>0 為資料表中的數值欄位設定驗證規則 — 使用者必須輸入大於零的值。

部分運算式的開頭為等於 (=) 運算子,其他運算式則否。 當您為表單或報表上的控制項計算值時,應在運算式的開頭加上 = 運算子。 在其他情況中,例如當您在查詢或欄位或控制項的 DefaultValueValidationRule 屬性中輸入運算式時,除非要將運算式新增到資料表中的文字欄位,否則不應使用 = 運算子。 在某些情況下,例如當您將運算式新增到查詢時,Access 會自動移除 = 運算子。

 
 
適用:
Access 2013, Access 2010, Access 2007