您可以使用運算式來對您的資料執行各種操作。 例如,判斷某張訂單已經出貨了多少天,或是將 FirstName 和 LastName 合併成 FullName。 下列各節將逐步示範如何建立運算式。
本文內容
計算表單和報表上控制項的值
當您使用運算式做為控制項的資料來源時,可以建立計算控制項。 例如,假設您的報表可以顯示多項庫存記錄,而且您想要在報表尾建立總計以加總報表的所有細項。
若要計算總數,請將文字方塊控制項放在報表尾,然後在下列運算式中設定文字方塊的 ControlSource 屬性:
=Sum([table_field])
在這個案例中,table_field 是包含小計值之欄位的名稱。 該欄位可位於資料表或查詢中。 Sum 函數會加總 table_field 的所有值。
程序
-
在 [功能窗格] 中,用滑鼠右鍵按一下要變更的表單,然後按一下捷徑功能表中的 [版面配置檢視] 或 [設計檢視]。
-
選取要輸入運算式的控制項。
-
如果沒有顯示屬性表,請按 F4 以顯示屬性表。
-
若要手動建立運算式,請在屬性工作表的 [資料] 索引標籤上,按一下文字方塊的 ControlSource 屬性,然後輸入 =,接著再輸入運算式的其餘部分。 例如,若要計算上述的小計,請輸入 =Sum([table_field]),務必將 table_field 換成您的欄位名稱。
-
若要 使用表達式建立器建立表達式,請按下屬性方塊中 的 [ 建立 ] 按鈕。
完成運算式之後,屬性工作表看起來像這樣:
使用運算式做為查詢準則
您可以在查詢中使用準則以縮小查詢結果。 當您輸入準則做為運算式,Access 就只會傳回符合運算式的資料列。
例如,假設您要查看出貨日期在 2017 年前三個月的所有訂單。 若要輸入準則,請在查詢中 [日期/時間] 資料行的 [準則] 儲存格內,輸入下列運算式。 這個範例會使用名為 ShippedDate 的 [日期/時間] 資料行。 若要定義日期範圍,請用這種方式輸入準則:
Between #1/1/2017# And #3/31/2017#
ShippedDate 資料行會與下圖所示類似。
對於 Orders 資料表的每一筆記錄而言,如果 ShippedDate 資料行中的值在您指定的日期範圍內,則在查詢輸出中將會包含該記錄。 請注意,在運算式會用井字號 (#) 括住日期。 Access 會將井字號括住的值視為「日期/時間」資料類型。 將這些值當做日期/時間資料處理,可讓您對這些值進行計算,例如將日期相減。
程序
-
在 [功能窗格] 中,用滑鼠右鍵按一下要變更的查詢,然後按一下捷徑功能表中的 [設計檢視]。
-
按一下要輸入準則的資料行中的 [準則] 儲存格。
-
若要手動建立您的運算式,請輸入準則運算式。 請不要在準則運算式前面加上 = 運算子。
-
若要使用運算式建立器建立您的運算式,請在功能區上,按一下 [設計],然後按一下 [查詢設定] 群組中的 [建立器] 。
如果需要更大的空間編輯運算式,請將游標放在 [準則] 儲存格,然後按下 SHIFT+F2 以顯示 [放大顯示] 方塊:
提示 若要讓文字更容易閱讀,請選取 [字型]。
在查詢中建立導出欄位
假設您正在設計查詢,而且想要使用查詢中的其他欄位顯示計算結果。 若要建立導出欄位,您可以在查詢之 [欄位] 列的空白儲存格中輸入運算式。 例如,如果查詢包含 Quantity 欄位和 Unit Price 欄位,您可將兩個欄位相乘以建立 Extended Price 導出欄位 (方法是在查詢的 [欄位] 列中輸入下列運算式):
Extended Price: [Quantity] * [Unit Price]
運算式前面的 Extended Price: 文字則會將新欄命名為「產品總價」。 此名稱通常稱為「別名」。 如果您沒有提供別名,Access 便會自行建立,例如 Expr1.
當您執行查詢時,Access 就會在每一列上執行計算,如下圖所示:
程序
-
在 [功能窗格] 中,用滑鼠右鍵按一下要變更的查詢,然後按一下捷徑功能表中的 [設計檢視]。
-
按一下要建立導出欄位的資料行中的 [欄位] 儲存格。
-
若要手動建立自己的運算式,請輸入運算式。
請不要在準則運算式前面加上 = 運算子;而是改用描述性標籤加上冒號來開始運算式。 例如,輸入 Extended Price: 以提供運算式的標籤,便會建立名為 Extended Price 的導出欄位。 接著,在冒號後面輸入運算式的準則。
-
若要使用運算式建立器建立您的運算式,請在功能區上,按一下 [設計],然後按一下 [查詢設定] 群組中的 [建立器]。
在資料表中建立導出欄位
在 Access 中,您可以在資料表中建立導出欄位。 如此就不需要個別查詢以執行計算。 例如,如果資料表依序列出每個項目的數量、價格和營業稅,您就可以新增顯示總價的導出欄位,如下所示:
[Quantity]*([UnitPrice]+([UnitPrice]*[TaxRate]))
計算不能包含其他資料表或查詢的欄位,且計算的結果為唯讀。
程序
-
在 [功能窗格] 中,按兩下資料表加以開啟。
-
水平捲動至資料表最右邊的欄,然後按一下 [按一下以新增] 欄標題。
-
在顯示的清單中,按一下 [導出欄位],然後按一下要用於結果的資料類型。 Access 隨即顯示運算式建立器。
-
輸入要用於此欄位的計算,例如:
[Quantity] * [Unit Price]
若是導出欄位,不必在運算式的開頭加上等號 (=)。
-
按一下 [確定]。
Access 隨即新增導出欄位,然後醒目提示欄位標題,以供您輸入欄位名稱。
-
輸入導出欄位的名稱,然後按 ENTER。
設定資料表欄位的預設值
您可以使用運算式為資料表中的欄位指定預設值;除非另行提供值,否則 Access 會針對新記錄使用該預設值。 例如,假設您想要只要有人新增記錄,就會自動將日期和時間插入名為「訂單日期」的欄位。 若要這麼做,您可以使用下列運算式:
Now()
程序
-
在 [功能窗格] 中,按兩下要變更的資料表。
Access 會在 [資料工作表檢視] 中開啟資料表。
-
選取要變更的欄位。
-
按兩下功能區上的 [ 資料表字段],然後按兩下 [ 屬性 ] 群組中的 [ 預設值]。 Access 隨即顯示運算式建立器。
-
在方塊中輸入您的運算式,請確定在運算式的開頭加上等號 (=)。
注意 如果您將控制項繫結至資料表欄位,而控制項和資料表欄位都有預設值,則控制項的預設值會優先於資料表欄位。
設定控制項的預設值
另一個常使用運算式的位置是控制項的 [預設值] 屬性。 控制項的 [預設值] 屬性就像是資料表欄位的 [預設值] 屬性。 例如,若要使用目前的日期做為文字方塊的預設值,您可以使用下列運算式:
Date()
這個運算式會使用 Date 函數傳回目前的日期,但不會傳回時間。 若是您將文字方塊繫結至資料表欄位,而欄位也有預設值,則控制項的預設值會優先於資料表欄位。 設定資料表欄位的 [預設值] 屬性是較合適的做法。 如此一來,如果您以相同資料表欄位做為不同表單之數個控制項的基礎,則會在每個控制項套用相同的預設值,以協助確認每個表單上的資料輸入一致。
程序
-
在 [功能窗格] 中,用滑鼠右鍵按一下要變更的表單或報表,然後按一下捷徑功能表中的 [設計檢視] 或 [版面配置檢視]。
-
選取要變更的控制項。
-
如果沒有顯示屬性表,請按 F4 以顯示屬性表。
-
按一下屬性表上的 [全部] 索引標籤,然後按一下 [預設值] 屬性方塊。
-
輸入表達式,或按兩下屬性方塊中 的 [ 建立 ] 按鈕, 以使用 [表達式建立器] 建立表達式。
新增驗證規則至資料表欄位或記錄
在資料庫中輸入資料時,最好使用運算式加以驗證,以避免輸入不正確的資料。 在資料表中有兩種驗證規則:欄位驗證規則 (防止使用者在單一欄位中輸入不正確的資料),以及記錄驗證規則 (防止使用者建立不符合驗證規則的記錄)。 您針對這兩種驗證規則使用運算式。
例如,假設您有一個名為 Inventory 的資料表,其中有個欄位名為 Units On Hand ,而現在您要設定規則,讓使用者只能輸入大於或等於零的值。 也就是說,庫存不能是負數。 如果要這麼做,您可以使用下列運算式做為 Units On Hand 欄位的欄位驗證規則:
>=0
程序:輸入欄位或記錄驗證規則
-
在 [功能窗格] 中,按兩下要變更的資料表。 Access 會在資料工作表檢視中開啟資料表。
-
如果是欄位的驗證規則,請選取要變更的欄位。
-
按兩下功能區上的 [ 資料表欄位],然後按兩下 [ 欄位驗證 ] 群組中的 [ 驗證],然後按兩下 [ 字段驗證規則 ] 或 [ 驗證規則]。 Access 隨即顯示運算式建立器。
-
開始輸入您所要的準則。 例如,如果欄位驗證規則要求所有的值要大於或等於零,請輸入下列內容:
>=0
請不要在運算式前面加上等號 (=)。
驗證規則運算式是布林值,這表示其針對任何特定輸入值皆為 True 或 False。 值的驗證規則必須為 True,否則 Access 就不會儲存輸入,並且會顯示指出錯誤的驗證訊息。 在此範例中,如果您輸入的 Units On Hand 欄位值小於零,驗證規則為 False,則 Access 不會接受該值。 如果您尚未輸入下節所述的驗證訊息,Access 便會顯示它自己的訊息,指出您所輸入的值已遭欄位的驗證規則禁止。
程序:輸入驗證訊息
若要讓資料庫更容易使用,您可以輸入自訂驗證訊息。 這些自訂訊息會取代 Access 在資料不符合驗證規則時所顯示的一般訊息。 您可以使用自訂驗證訊息來提供特定資訊,協助使用者輸入正確的資料,例如「庫存數量值不可為負數」。
-
在 [功能窗格] 中,按兩下要變更的資料表。
Access 會在 [資料工作表檢視] 中開啟資料表。
-
如果是欄位驗證訊息,請選取要新增驗證規則的欄位。
-
按兩下功能區上的 [ 資料表欄位],然後按兩下 [ 字段驗證 ] 群組中的 [ 驗證],然後按兩下 [ 字段驗證訊息 ] 或 [ 驗證郵件]。
-
在 [輸入驗證訊息] 對話方塊中,輸入您要在資料與驗證規則不相符時顯示的訊息,然後按一下 [確定]。
新增驗證規則至控制項
除了資料表欄位及記錄以外,控制項還有可接受運算式的 [驗證規則] 屬性。 例如,假設您使用表單輸入報表的日期範圍,而且想確定開始日期不會早於 2017/1/1。 您可以輸入開始日期至下列文字框的文字盒設定驗證 規則 與 驗證文字 屬性:
屬性 |
設定 |
---|---|
驗證規則 |
>=#2017/1/1# |
驗證文字 |
您無法輸入早於 2017/1/1 的日期。 |
如果您嘗試輸入早於 2017/1/1 的日期,就會出現一則訊息,並在 [ 驗證文字 ] 屬性中顯示文字。 如果未在 [ 驗證文字 ] 屬性方塊中輸入任何文字,Access 會顯示一般訊息。 按一下 [確定] 之後,Access 會返回文字方塊。
無論在何處修改資料表欄位,只要針對該欄位設定驗證規則,就會在整個資料庫中強制執行規則。 或者,如果針對表單上的控制項設定驗證規則,則只有當使用該表單時才會強制執行規則。 如果想要針對不同的使用者建立不同的驗證規則,則可以分別針對資料表欄位及表單上的控制項設定驗證規則。
程序
-
在 [功能窗格] 中,用滑鼠右鍵按一下要變更的表單或報表,然後按一下捷徑功能表中的 [設計檢視] 或 [版面配置檢視]。
-
以滑鼠右鍵按一下要變更的控制項,然後按一下捷徑功能表中的 [屬性]。 Access 會顯示控制項的屬性表。
-
按一下 [全部] 索引標籤,然後按一下 [驗證規則] 屬性方塊。
-
輸入表達式,或按兩下屬性方塊中 的 [ 建立 ] 按鈕, 以使用 [表達式建立器] 建立表達式。
請不要在運算式前面加上 = 運算子。
-
若要自訂使用者輸入與驗證規則不相符的資料時要顯示的文字,請在 [驗證文字] 屬性中輸入所要文字。
將報表中的資料分組和排序
您可以使用 [群組、排序與合計] 窗格定義報表資料的群組層次和排序順序。 一般來說,您大部分都是針對從清單選取的欄位進行分組或排序。 不過,如果您要對計算值進行分組或排序,則可改成輸入運算式。
分組是組合包含重複值的欄的程序。 例如,假設您的資料庫包含不同城市之辦事處的銷售資訊,並且資料庫中的某個報表名為「各城市的銷售量」。 提供該報表資料的查詢會依照城市值對資料進行分組。 這種類型的分組可以使您的資訊更易於閱讀和理解。
相對地,排序則是強制將查詢結果中的列 (或記錄) 照順序排列。 例如,您可以依主索引鍵值 (或其他欄位中的另一組值) 遞增或遞減排序記錄,或是依一個或多個字元照指定的順序 (例如字母順序) 排序。
程序:將群組和排序加入報表
-
在 [功能窗格] 中,用滑鼠右鍵按一下要變更的報表,然後按一下捷徑功能表中的 [版面配置檢視] 或 [設計檢視]。
-
按兩下功能區上的 [ 報表設計],然後在 [ 群組 & 合計 ] 群組中,按兩下 [ 群組 & 排序]。 [群組、排序與合計] 窗格會出現在報表下方。
-
若要將群組層次新增到報表,請按一下 [新增群組]。
-
若要將排序順序新增到報表,請按一下 [新增排序]。
新的群組層次或排序順序,以及提供報表資料的欄位清單都會顯示在窗格中。 此圖顯示典型的新群組層次 (依類別分組) 和排序順序 (依製造商排序),以及群組和排序可用欄位的清單:
-
在可用欄位的清單底下,按一下 [運算式] 以開始使用運算式建立器。
-
在運算式建立器的運算式方塊 (上面的方塊) 中輸入要使用的運算式。 請確認您以等於 (=) 運算子當做運算式的開頭。
程序:將運算式新增到現有群組或排序
-
在 [功能窗格] 中,用滑鼠右鍵按一下要變更的報表,然後按一下捷徑功能表中的 [版面配置檢視] 或 [設計檢視]。
-
按一下要變更的群組層次或排序順序。
-
按一下 [群組對象] (針對群組層次) 或 [排序方式] (針對排序順序) 旁的向下鍵。 包含可用欄位的清單隨即出現。
-
在包含欄位的清單底部,按一下 [運算式] 以開始使用運算式建立器。
-
在運算式建立器的運算式方塊 (上面的方塊) 中輸入運算式。 請確認您以等於 (=) 運算子做為運算式的開頭。
控制要執行哪些巨集指令
在某些情況下,建議您只在特定條件成立時,才執行巨集中的某個巨集指令或一連串巨集指令。 例如,假設您只要在文字方塊中的值大於或等於 10 時才執行巨集指令。 若要設定此規則,您可以在巨集的 [If] 區塊中使用運算式,即可在巨集中定義條件。
在此範例中,假設文字方塊的名稱為「項目」。 設定條件的運算式為:
[Items]>=10
程序
-
在 [功能窗格] 中,用滑鼠右鍵按一下要變更的巨集,然後按一下捷徑功能表中的 [設計檢視]。
-
按一下要修改的 [If] 區塊,或是從 [巨集指令目錄] 窗格中新增 [If] 區塊。
-
按一下 [If] 區塊的最上面一行。
-
在方塊中輸入條件表達式,或按兩下表示式方塊旁的 [ 建立 ] 按鈕 ,即可開始 使用表達式建立器。
輸入的運算式必須是布林值 (表示其為 True 或 False)。 只有在條件為 True 時,[If] 區塊中的巨集指令才會執行。