運算式簡介
套用到
你可以在 Microsoft Access 中使用表達式執行各種任務,例如進行數學計算、合併或擷取文字,或驗證資料。 本文提供關於表達式的概述資訊——何時使用它們、它們的組成部分是什麼,以及它們與 Microsoft Excel 公式的比較。
本文內容
運算式概觀
您可以將這想像成:若要 Access 執行某項工作,您就必須使用它的語言。 舉例來說,假設你想告訴 Access「請查看 Customers 表格中的出生日期欄位,告訴我客戶的出生年份。」你可以將此表達式寫成:
DatePart("yyyy",[Customers]![BirthDate])
此表達式包含 DatePart 函數及兩個參數值: "yyyy" 與 [Customers]![BirthDate]。
現在就讓我們更詳細地解析這個運算式。
1 DatePart 是一個檢查日期並回傳特定部分的函式。 這個例子用了前兩個引數。
2 區間參數告訴 Access 要回傳日期的哪一部分——在此例中,告訴 "yyyy" Access 你只想要回傳日期的年份部分。
3 日期參數告訴 Access 該在哪裡尋找日期值——在此例中,[Customers]![BirthDate] 告訴 Access 在客戶資料表的 BirthDate 欄位中尋找日期。
使用運算式的方式
您可以透過下列方式使用運算式:
- 計算值:計算並非直接存在資料中的值。 您可以計算資料表中的欄位和查詢中的值,也可以計算表單和報表上控制項中的值。
- 定義預設值:為資料表欄位或是表單或報表上的控制項定義預設值。 每當您開啟資料表、表單或報表時,就會顯示這些預設值。
- 建立驗證規則:建立驗證規則以控制使用者可以在欄位或控制項中輸入的值。
- 定義查詢準則:定義查詢準則以將結果限制為想要的子集。
計算值
在 Access 中,運算式最常見的使用方式之一是計算不直接位於您資料中的值。 資料表或查詢中的資料行,是透過計算所得的結果,就稱為「導出欄位」。 您可以建立合併兩個或多個資料表欄位的導出欄位。 例如,許多資料表將名字與姓氏儲存在兩個不同的欄位中。 如果您想要合併名字和姓氏,然後將它們顯示在單一欄位中,您可以在資料表或查詢中建立導出欄位:
[FirstName] & " " & [LastName].
在這種情況下, (& 的&符號) 結合了欄位中的 FirstName 值、一個 () 引號包圍的空間字元,以及欄位中的 LastName 值。
定義預設值
您也可以用 Access 運算式為資料表欄位或控制項提供預設值。 例如,要將某個日期欄位的預設值設為當前日期,在該欄位的 預設值 屬性框中,你可以輸入:
Date()
建立驗證規則
此外,您也可以使用運算式設定驗證規則。 例如,您可以在控制項或資料表欄位中使用驗證規則,要求輸入的日期大於或等於目前日期。 在這種情況下,您會將 [驗證規則] 屬性方塊中的值設定為:
>= Date()
定義查詢準則
最後,您可以用運算式來設定查詢的準則。 例如,假設您想查看某段時間內出貨的訂單產品銷售情形。 您可以輸入準則來定義日期範圍,Access 只會傳回符合準則的列。 例如,運算式可能看起來會像這樣:
Between #1/1/2017# And #12/31/2017#
當您將準則新增到查詢中,接著執行查詢時,只會傳回符合指定日期的值。
運算式的範例
下表列出一些 Access 運算式的範例,以及它們的常見使用方式:
| 運算式 | 目的 |
|---|---|
=[RequiredDate]-[ShippedDate] |
計算報表上兩個文字方塊控制項 (名稱為 RequiredDate 和 ShippedDate) 中日期值之間的差異。 |
Date() |
將 [日期/時間] 資料表欄位的預設值設為目前日期。 |
Between #1/1/2017# And #12/31/2017# |
指定查詢中 [日期/時間] 欄位的準則。 |
=[Orders Subform].Form!OrderSubtotal |
傳回訂單表單之訂單子表單上 OrderSubtotal 控制項的值。 |
>0 |
為資料表中的數值欄位設定驗證規則 - 使用者必須輸入大於零的值。 |
有些表達式以等 (=) 運算子開頭,有些則不是。 當你在表單或報告中計算控制值時,你會使用 = 運算子來開始運算式。 在其他情況下,例如你在查詢中輸入表達式,或在欄位或控制項的 DefaultValue 或 ValidationRule 屬性中輸入表達式時,除非你將表達式加入表格中的文字欄位,否則不會使用運算 = 子。 在某些情況下,例如你在查詢中加入表達式時,Access 會自動移除運算子 = 。
運算式的組成
運算式包含數個您可單獨或合併使用以產生結果的可能元素。 這些元素包括:
- 識別碼:表單或報表的資料表欄位或控制項的名稱,或是這類欄位或控制項的屬性。
-
營運商 例如, (
+加) 或-(減) 。 - 職能 例如,SUM或AVG。
- 常數:即不會變更的值,例如運算式不會計算的文字字串或數字。
- 價值觀 字串,例如「輸入介於1到10之間的數字。」或數字,例如1,254,用於運算。
下列各節將詳細說明這些元素。
識別碼
識別碼就是欄位、屬性或控制項的名稱。 您可以在運算式中使用識別碼來參照與欄位、屬性或控制項相關的值。 例如,考慮表達 =[RequiredDate]-[ShippedDate]式 。 此表達式從場或控制值減去場或控制的值ShippedDateRequiredDate。 在此表達式中,兩者RequiredDateShippedDate皆作為識別符號。
運算子
Access 支援多種運算子,包括常見的算術運算子,如 +、 、 - (* 乘) 和 / (除) 。 你也可以使用比較運算子,如 < 小於 () 或 > 大於 () 來比較數值,文字運算子如 & 和 + 用於串接 (合併文字) ,邏輯運算 Not 子如 和 And 來判定真假值,以及其他專屬於 Access 的運算子。
函數
函數是可用於運算式的內建程序。 您可以在多種作業中使用函數,例如計算值、處理文字和日期,以及摘要資料。 例如,常用的函數之一包括 DATE,此函數會傳回目前日期。 使用 DATE 函數的方式有很多,例如用於為資料表欄位設定預設值的運算式。 在這個範例中,每當有人新增記錄時,根據預設,欄位值就會設定為目前的日期。
有些函數需要引數。 引數就是為函數提供輸入內容的值。 如果函數需要一個以上的引數,請以逗號分隔引數。 例如,我們可以參考下列範例運算式中的 DATE 函數:
=Format(Date(),"mmmm d, yyyy")
這個範例使用了兩個引數:
- 第一個參數是
Date()函數,回傳當前日期。 沒有引數時,您仍然需要加入函數括號。 - 第二個參數
"mmmm d, yyyy"與第一個參數以逗號分隔,指定一個文字字串,指示 FORMAT 函式如何格式化回傳的日期值。 請注意,文字字串必須以引號括住。
這個運算式也說明,您通常可將某個函數傳回的值做為引數,將它巢狀放入另一個函數中。 在這種情況下,作為 Date() 一個論點。
常數
常數是 Access 執行時值不會變動的項目。
True這些 、 False和 Null 常數經常用於表達式中。
值
您可以在運算式中使用常值,例如數字 1,254 或字串「輸入一個 1 到 10 之間的數字」。您也可以使用數值,數值可以是包含正負號和小數點 (如有需要) 的一串數字。
當您使用文字字串值時,請用引號括住,Access 才更能正確地解譯。 在某些情況下,Access 會為您加上引號。 例如,當您在驗證規則或查詢準則運算式中輸入文字時,Access 會自動為您的文字字串加上引號。
使用日期/時間值時,請用磅號 (#) 。 例如, #3-7-17#, #7-Mar-17#和 #Mar-7-2017# 都是有效的日期/時間值。 當 Access 遇到用 # 字元括住的有效日期/時間值時,會自動將值視為「日期/時間」資料類型。
比較 Access 運算式和 Excel 公式
Access 運算式與 Excel 公式的近似之處在於兩者使用相仿的元素產生結果。 Excel 公式和 Access 運算式都包含下列一或多個項目:
-
識別碼 在 Excel 中,識別碼是工作簿中各個儲存格或儲存格範圍的名稱,例如 A1、B3:C6 或 Sheet2!C32。 在 Access 中,識別碼是表單欄位的名稱, (如
[Contacts]![First Name]) 、表單或報告上的控制項 (如Forms![Task List]![Description]) ,或這些欄位或控制項 (的屬性,如Forms![Task List]![Description].ColumnWidth) 。 -
營運商 在 Access 和 Excel 中,運算子都用於比較數值或對資料進行簡單計算。 例如
+(加) 或-(減) 。 - 職能 在 Access 和 Excel 中,函式和參數都用來完成單靠運算子無法完成的任務——例如,你可以找到欄位中數值的平均值,或將計算結果轉換成貨幣格式。 函數的範例包括 SUM 和 STDEV。 引數是提供函數資訊的值。 請注意,Access 和 Excel 都有許多函數可供選擇,但程式中類似函數的名稱有時候會有所不同。 例如,Excel 中的 AVERAGE 函數等同於 Access 中的 AVG 函數。
- 常數:在 Access 和 Excel 中,常數是不會變的值 - 例如並非使用運算式計算出來的數字。
- 價值觀 在 Access 和 Excel 中,數值的使用方式相似。
Access 運算式所使用的運算子和常數與 Excel 公式很相似,但 Access 運算式使用不同的識別碼和函數。 Excel 公式通常只會在工作表儲存格中派上用場,而 Access 運算式在 Access 中則常會用來進行多種工作,包括下列各項工作:
- 在表單和報表上建立計算控制項
- 在資料表和查詢中建立導出欄位
- 做為查詢中的準則
- 驗證輸入欄位或表單控制項的資料
- 在報表中群組資料
利用數學運算子,您就可以用 Access 運算式或 Excel 公式來計算數字或日期/時間的值。 例如,要計算客戶的折扣價格,可以使用 Excel 公式 =C2* (1-D2) 或 Access 表達式 = [Unit Price]*(1-[Discount])。
您也可以使用字串運算子,透過 Access 運算式或 Excel 公式來合併、分割或以其他方式操作字串。 例如,要將名字和姓氏合併成一個字串,你可以使用 Excel 公式 =D3 & “” & D4 或 Access 表達式 = [First Name] & " " & [Last Name]。