運算式的範例

套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

本文提供 Access 運算式的範例。 運算式將數學或邏輯運算子、常數、函數、資料表欄位、控制項和屬性結合成單一值。 您可以在 Access 中使用運算式來計算數值、驗證資料,及設定預設值。

本文內容

表單和報表

所有表單和報表運算式

文字運算; 其他控制項中的值; 日期運算 頁首及頁尾; 計數、加總和平均值; 僅有兩個值的條件 算術運算; SQL 彙總函數

查詢和篩選

所有查詢和篩選運算式

文字運算; SQL 彙總函數; 比對文字值; 使用 Like 比對記錄模式; 更新查詢 算術運算; 尋找遺失的資料; 比較資料準則; 使用 SQL 彙總來比較資料列; SQL 陳述式 日期運算; 使用子查詢的導出欄位; 包含遺失資料的欄位; 使用子查詢比對欄位

表格

所有資料表運算式

欄位預設值 欄位驗證規則

巨集

所有巨集運算式

表單和報表

本節中的資料表顯示用於計算表單或報表控制項值的運算式。 若要建立計算控制項,請在控制項的屬性中 ControlSource 輸入運算式,而不是在資料表欄位或查詢中輸入運算式。

注意

您也可以在表單或報表中使用運算式來醒 目提示具有條件式格式設定的資料。

文字運算

下表中的運算式使用 & (符號) 和 + (加上) 運算子來合併文字字串、使用內建函數來處理文字,或是建立計算控制項。

運算式 結果
="N/A" 顯示 N/A。
=[FirstName] & " " & [LastName] 會顯示位於 FirstName 和 LastName 資料表欄位內的值。 在此範例中, & 運算子用於合併 FirstName 欄位、 (以引號括住的空格字元) 和 LastName 欄位。
=Left([ProductName], 1) 使用此函數顯示 Left 稱為 ProductName的欄位或控制項中值的第一個字元。
=Right([AssetCode], 2) 使用此函數顯示 Right 稱為 AssetCode的欄位或控制項值的最後兩個字元。
=Trim([Address]) 使用函數顯示 Trim 移除前置和後置空格後的控制項值 Address
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) 使用函數在IIf控制項為 Null 時Region顯示 和 CityPostalCode 控制項的值。 否則,它會顯示 、 RegionPostalCode控制項的City值,並以空格分隔。
=[City] & (" " + [Region]) & " " & [PostalCode] 使用運算子和 Null 傳播,在+欄位或控制項中的Region值為 Null 時顯示 and PostalCodeCity 控制項的值。 否則,它會顯示 、 RegionPostalCode欄位或控制項的City值,並以空格分隔。 Null 傳播表示運算式的任何部分為 Null,則整個運算式為 Null。 運算子 + 支援 null 傳播,但 & 運算子不支援。

回到頂端

頁首及頁尾

使用 PagePages 屬性顯示或列印表單或報表中的頁碼。 這些屬性只能在列印期間或 [預覽列印] 使用,因此不會出現在表單或報表中的屬性表內。 一般而言,您會將文字方塊放在表單或報表的頁首或頁尾區段中,然後使用如下表所示的運算式。

如需有關如何在表單和報表中使用頁首及頁尾的詳細資訊,請參閱表單或報表中插入頁碼一文。

運算式 結果
=[Page] 1
="Page " & [Page] 第 1 頁
="Page " & [Page] & " of " & [Pages] 頁 1 / 3
=[Page] & " of " & [Pages] & " Pages" 第 1 頁,共 3 頁
=[Page] & "/" & [Pages] & " Pages" 1/3 頁
=[Country/region] & " - " & [Page] 英國 - 1
=Format([Page], "000") 001
="Printed on: " & Date() 列印日期:12/31/17

回到頂端

算術運算

您可以利用運算式將兩個以上的欄位或控制項中的值相加、相減、相乘和相除。 您也可以使用運算式來執行日期的算術運算。 舉例來說,假設您有個日期/時間資料表的欄位,稱為 RequiredDate。 在與該欄位相連的欄位或控制項中,運算式 =[RequiredDate] - 2 傳回的日期/時間值等於 RequiredDate 欄位中目前值的 2 天前。

運算式 結果
=[Subtotal]+[Freight] Subtotal 和 Freight 欄位或控制項值的總和。
=[RequiredDate]-[ShippedDate] RequiredDate 和 ShippedDate 欄位或控制項兩者日期值之間相隔的天數。
=[Price]*1.06 Price 欄位或控制項值乘以 1.06 (也就是另加上 Price 值的百分之 6) 的結果。
=[Quantity]*[Price] Qantity 和 Price 欄位或控制項值相乘的結果。
=[EmployeeTotal]/[CountryRegionTotal] EmployeeTotal 欄位或控制項值除以 CountryRegionTotal 欄位或控制項值的結果。

注意

當您在運算式中使用算術運算子 (+-*/) ,而其中一個控制項為 null 時,則整個運算式的結果為 null。 這稱為空傳播。 如果控制項可能有 Null 值,您可以使用 Nz 函數將 Null 值轉換為零,以避免 Null 傳播。 例如,使用 =Nz([Subtotal])+Nz([Freight])

回到頂端

其他控制項中的值

有時候,您會需要存在其他資源中的值,例如存在另一份表單或報表的欄位或控制項中的值。 這時您可以使用運算式來傳回其他欄位或控制項的值。

下表列出您可用於表單上計算控制項的運算式範例。

運算式 結果
=Forms![Orders]![OrderID] 在 Orders 表單中,OrderID 控制項的值。
=Forms![Orders]![Orders Subform].Form![OrderSubtotal] 在 Orders 表單中,子表單名為 Orders Subform 上的 OrderSubtotal 控制項值。
=Forms![Orders]![Orders Subform]![ProductID].Column(2) 在 Orders 表單中,子表單名為 Orders Subform 上的多欄清單方塊 ProductID,其第三欄的值 (請注意,0 代表第一欄,1 代表第二欄,以此類推)。
=Forms![Orders]![Orders Subform]![Price] * 1.06 在 Orders 表單中,子表單名為 Orders Subform 上的 Price 控制項值乘以 1.06 (也就是另加上 Price 控制項值的百分之 6) 的結果。
=Parent![OrderID] 目前子表單的主要或上層表單中,OrderID 控制項的值。

下表的運算式顯示報表中使用計算控制項的幾種方式。 運算式會參照 Report 屬性

運算式 結果
=Report![Invoice]![OrderID] 名為 "Invoice" 的報表中 "OrderID" 控制項的值。
=Report![Summary]![Summary Subreport]![SalesTotal] Summary 報表中,子報表名為 Summary Subreport 上的 SalesTotal 控制項的值。
=Parent![OrderID] 在目前子報表的主要或父報表中,OrderID 控制項的值。

回到頂端

計數、加總和平均值

您可以利用稱為彙總函數的這類函數來計算一或多個欄位或控制項的值。 例如,您可以計算報表中群組尾的群組總數,或是表單上明細項目的訂單小計。 您也可以計算一或多個欄位中的項目數目,或是計算平均值。

下表中的運算式說明 Avg、Count 和 Sum 等函數的幾種使用方式。

運算式 描述
=Avg([Freight]) 使用 Avg 函數顯示名為 "Freight" 的資料表欄位或控制項值的平均值。
=Count([OrderID]) 使用 Count 函數顯示 OrderID 控制項中記錄的數目。
=Sum([Sales]) 使用 Sum 函數顯示 Sales 控制項值的加總。
=Sum([Quantity]*[Price]) 使用 Sum 函數顯示 Quantity 和 Price 控制項值相乘的加總。
=[Sales]/Sum([Sales])*100 將控制項值 Sales 除以控制項中 Sales 所有值的總和來顯示銷售額所佔的百分比。 如果您將控制項的屬性設為 FormatPercent,請勿包含在 *100 運算式中。

如需關於使用彙總函數和加總欄位和資料行中之值的詳細資訊,請參閱使用查詢加總資料 (機器翻譯)、使用查詢計算資料 (機器翻譯)、顯示使用 [合計] 列的資料工作表中的資料行總數 (機器翻譯) 和顯示資料工作表中的資料行總數 (機器翻譯)。

回到頂端

SQL 彙總函數

若需選擇性加總或計算值,您可以使用 SQL​​ 或範圍彙總函數這類函數。 「範圍」包括一或多個資料表中的一或多個欄位,或是一或多個表單或報表中的一或多個控制項。 例如,您可以藉此比對資料表欄位值和表單控制項值。

運算式 描述
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms("Suppliers")("[SupplierID]")) 使用 DLookup 函數,在 Suppliers 資料表中的 SupplierID 欄位值與 Suppliers 表單中的 SupplierID 控制項值相符時,傳回資料表中的 ContactName 欄位值。
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms![New Suppliers]![SupplierID]) 使用 DLookup 函數,在 Suppliers 資料表中的 SupplierID 欄位值與 New Suppliers 表單中的 SupplierID 控制項值相符時,傳回資料表中的 ContactName 欄位值。
=DSum("[OrderAmount]", "[Orders]", "[CustomerID] = 'RATTC'") 使用 DSum 函數,傳回在 Orders 資料表中 OrderAmount 欄位值的總計,其 CustomerID 為 RATTC。
=DCount("[Retired]","[Assets]","[Retired]=Yes") 使用 DCount 函數傳回 Assets 資料表中 Retired 欄位 (Yes/No 欄位) 為 Yes 值的數目。

回到頂端

日期運算

追蹤日期和時間是基本的資料庫活動。 例如,您可計算目前距離發票日期已過幾天,藉此追蹤應收帳款的時間。 如下表所示,有多種日期和時間格式可供您採用。

運算式 描述
=Date() 使用 Date 函數,以 的形式 mm-dd-yy顯示目前日期 ,其中 mm 是月份 (1 到 12) , dd (是日期 1 到 31) yy ,以及 是 1980 到 2099) (年份的最後兩個數字。
=Format(Now(), "ww") 使用 Format 函數顯示目前日期在該年度的週次,其中 ww 代表第 1 至 53 週。
=DatePart("yyyy", [OrderDate]) 使用 DatePart 函數顯示 OrderDate 控制項值的四位數西元年份。
=DateAdd("y", -10, [PromisedDate]) 使用 DateAdd 函數顯示 PromisedDate 控制項值 10 天前的日期。
=DateDiff("d", [OrderDate], [ShippedDate]) 使用 DateDiff 函數顯示 OrderDate 和 ShippedDate 控制項值之間相隔的天數。
=[InvoiceDate] + 30 使用日期的算術運算來計算 [InvoiceDate] 欄位或控制項中日期過後的第 30 天。

回到頂端

僅有兩個值的條件

下表中的範例運算式使用 IIf 函數來傳回可能的值 (二擇一)。 您傳遞三個引數給 IIf 函數:第一個引數是必須傳回 a TrueFalse 值的運算式。 第二個引數是運算式若為 True 要傳回的值;第三個引數則是運算式若為 False 要傳回的值。

運算式 描述
=IIf([Confirmed] = "Yes", "Order Confirmed", "Order Not Confirmed") 使用 IIf (Immediate If) 函數,在 Confirmed 控制項的值為 Yes時,顯示「訂單已確認」訊息;否則顯示訊息 "Order Not Confirmed."
=IIf(IsNull([Country/region]), " ", [Country]) 使用 IIf 和 IsNull 函數,在 Country/region 控制項值為 Null 時顯示空字串;否則顯示 Country/region 控制項的值。
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) 使用 IIf 和 IsNull 函數,在 Region 控制項值為 Null 時顯示 City 和 PostalCode 控制項的值;否則顯示 City、Region 和 PostalCode 欄位或控制項的值。
=IIf(IsNull([RequiredDate]) Or IsNull([ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) 使用 IIf 和 IsNull 函數,在 RequiredDate 扣除 ShippedDate 的結果為 Null 時顯示「檢查是否缺少日期」訊息;否則顯示 RequiredDate 和 ShippedDate 兩個控制項日期值之間相隔的時間。

回到頂端

查詢和篩選

本節提供您可用來在查詢中建立導出欄位或為查詢提供準則的運算式範例。 導出欄位為查詢中的資料行,其內容為運算式結果。 舉例來說,您可以計算值、合併文字值 (例如姓氏與名字),或設定日期部分的格式。

您可以在查詢中使用準則來限制您處理的記錄。 例如,您可以使用 Between 運算子來提供開始和結束日期,並將查詢結果限制在這兩個日期之間所出貨的訂單。

下列各節提供用於查詢的運算式範例。

查詢中的文字運算

下表中的運算式使用 & AND + 運算子來合併文字字串、使用內建函數來按文字字串執行,或是按文字執行來建立導出欄位。

運算式 描述
FullName: [FirstName] & " " & [LastName] 建立名為 FullName 的欄位來顯示 FirstName 和 LastName 欄位中的值 (以空格分隔)。
Address2: [City] & " " & [Region] & " " & [PostalCode] 建立名為 Address2 的欄位來顯示 City、Region 和 PostalCode 欄位中的值 (以空格分隔)。
ProductInitial: Left([ProductName], 1) 建立名為 ProductInitial 的欄位,然後使用 Left 函數在 ProductInitial 欄位中顯示 ProductName 欄位值的第一個字元。
TypeCode: Right([AssetCode], 2) 建立名為 TypeCode 的欄位,然後使用 Right 函數顯示 AssetCode 欄位值的最後兩個字元。
AreaCode: Mid([Phone],2,3) 建立名為 AreaCode 的欄位,然後使用 Mid 函數顯示 Phone 欄位值第二個字元開始的三個字元。
ExtendedPrice: CCur([Order Details].[Unit Price]*[Quantity]*(1-[Discount])/100)*100 將導出欄位命名為 ExtendedPrice,並使用 CCur 函數來運計算套用了折扣後的明細項目加總。

回到頂端

查詢中的算術運算

您可以利用運算式將兩個以上的欄位或控制項中的值相加、相減、相乘和相除。 您也可以執行日期的算術運算。 舉例來說,假設您有個日期/時間欄位,稱為 RequiredDate。 運算式 =[RequiredDate] - 2 傳回的日期/時間值等於 RequiredDate 欄位中目前值的 2 天前。

運算式 描述
PrimeFreight: [Freight] * 1.1 建立名為 PrimeFreight 的欄位,然後在欄位中顯示另加了百分之 10 的運費。
OrderAmount: [Quantity] * [UnitPrice] 建立名為 OrderAmount 欄位,然後顯示 Quantity 和 UnitPrice 欄位值相乘的結果。
LeadTime: [RequiredDate] - [ShippedDate] 建立名為 LeadTime 的欄位,然後顯示 RequiredDate 和 ShippedDate 欄位值相差的時間。
TotalStock: [UnitsInStock]+[UnitsOnOrder] 建立名為 TotalStock 的欄位,然後顯示 UnitsInStock 和 UnitsOnOrder 欄位值的總和。
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 建立名為 FreightPercentage的欄位,然後顯示運費在每個小計中所佔的百分比。 此運算式會使用函數來加 Sum 總欄位中的 Freight 值,再將加總結果除以欄位中 Subtotal 值的總和。 若要使用此運算式,請將選取查詢轉換成合計查詢。 您必須使用設計方格中的 [ 合計 ] 資料列,並將此欄位的 [合計 ] 儲存格設為 Expression。 如需建立合計查詢的詳細資訊,請參閱 使用查詢加總資料。 如果您將欄位的屬性設為 FormatPercent,請勿包含 *100

如需關於使用彙總函數和加總欄位和資料行中之值的詳細資訊,請參閱使用查詢加總資料 (機器翻譯)、使用查詢計算資料 (機器翻譯)、顯示使用 [合計] 列的資料工作表中的資料行總數 (機器翻譯) 和顯示資料工作表中的資料行總數 (機器翻譯)。

回到頂端

查詢中的日期運算

幾乎所有的資料庫都可以儲存及追蹤日期和時間。 將資料表中的日期和時間欄位設為日期/時間資料類型,即可在 Access 中處理日期和時間。 Access 可以執行日期的算術計算;例如,您可計算目前距離發票日期已過幾天,藉此追蹤應收帳款的時間。

運算式 描述
LagTime: DateDiff("d", [OrderDate], [ShippedDate]) 建立名為 LagTime 的欄位,然後使用 DateDiff 函數顯示訂單日期和出貨日期相隔的天數。
YearHired: DatePart("yyyy",[HireDate]) 建立名為 YearHired 的欄位,然後使用 DatePart 函數顯示每位員工的到職年份。
MinusThirty: Date( )- 30 建立名為 MinusThirty 的欄位,然後使用 Date 函數顯示目前日期 30 天前的日期。

回到頂端

查詢中的 SQL 彙總函數

下表中的運算式使用了 SQL 函數來彙總或合計資料。 您經常會看到像是 、 Count之類Sum的函數,並Avg稱為彙總函數。

除了彙總函數,Access 也提供範圍彙總函數,可讓您選擇性加總或計算值。 例如,您可以只計算特定範圍內的值,或查詢其他資料表的值。 網域彙總函數包括 DSumDCountDAvg

若要計算總計,您通常需要建立合計查詢。 例如,若要依群組摘要,請使用 [合計] 查詢。 若要從查詢設計方格啟用合計查詢,請選取 [檢視] 功能表上的 [合計]。

運算式 描述
RowCount: Count(*) 建立名為 RowCount 的欄位,然後使用 Count 函數計算查詢中的記錄數目,包含具有 Null (空白) 欄位的記錄在內。
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 建立名為 的欄位 FreightPercentage,然後將欄位值 Freight 的總和除以欄位值的總和 Subtotal ,計算運費在每個小計中所佔的百分比。 此範例會使用函數 Sum 。 您必須搭配合計查詢來使用這個運算式。 如果您將欄位的屬性設為 FormatPercent,請勿包含 *100。 如需建立合計查詢的詳細資訊,請參閱 使用查詢加總資料
AverageFreight: DAvg("[Freight]", "[Orders]") 建立名為 AverageFreight 的欄位,然後使用 DAvg 函數來計算合併於合計查詢中所有訂單的平均運費。

回到頂端

包含遺失資料的欄位

此處顯示的運算式處理可能遺漏資訊的欄位,例如包含 Null (未知或未定義) 值的欄位。 您常會碰到 Null 值,像是新產品價格未知,或是同事忘記在訂單中加入值時,就會遇到這種情況。 找出並處理 Null 值是資料庫運作的重要環節,下表中的運算式將示範處理 Null 值的幾種常見方式。

運算式 描述
CurrentCountryRegion: IIf(IsNull([CountryRegion]), " ", [CountryRegion]) 建立名為 CurrentCountryRegion 的欄位,然後使用 IIf 和 IsNull 函數,在 CountryRegion 欄位包含 Null 值時,於該欄位中顯示空字串;否則顯示 CountryRegion 欄位的內容。
LeadTime: IIf(IsNull([RequiredDate] - [ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) 建立名為 LeadTime 的欄位,然後使用 IIf 和 IsNull 函數,在 RequiredDate 欄位或 ShippedDate 欄位的值為 Null 時,顯示「檢查是否缺少日期」訊息;否則顯示相差的日期。
SixMonthSales: Nz([Qtr1Sales]) + Nz([Qtr2Sales]) 建立名為 SixMonthSales 的欄位,先使用 Nz 函數將所有 Null 值轉換為零,然後再顯示 Qtr1Sales 和 Qtr2Sales 欄位值的總計。

回到頂端

使用子查詢來導出欄位

您可以使用巢狀查詢 (也稱為子查詢) 來建立導出欄位。 下表中的運算式示範從子查詢結果取得的導出欄位。

運算式 描述
Cat: (SELECT [CategoryName] FROM [Categories] WHERE [Products].[CategoryID]=[Categories].[CategoryID]) 建立名為 Cat 的欄位,在 Categories 資料表中的 CategoryID 與 Products 資料表中的 CategoryID 相同時顯示 CategoryName。

回到頂端

比對文字值

本表中的範例運算式示範比對全部或部分文字值的準則。

欄位 運算式 描述
ShipCity "London" 顯示出貨至倫敦的訂單。
ShipCity "London" Or "Hedge End" 使用 Or 運算子顯示出貨至倫敦或赫奇恩德的訂單。
ShipCountryRegion In("Canada", "UK") 使用 In 運算子顯示出貨至加拿大或英國的訂單。
ShipCountryRegion Not "USA" 使用 Not 運算子顯示出貨至美國以外之國家/地區的訂單。
ProductName Not Like "C*" 使用 Not 運算子和 * 萬用字元來顯示名稱開頭不是 C 的產品。
CompanyName >="N" 顯示名稱的字母NZ開頭為 的訂單收件公司。
ProductCode Right([ProductCode], 2)="99" 使用 Right 函數顯示 ProductCode 值結尾 99為 的訂單。
ShipName Like "S*" 顯示名稱以字母 S開頭的訂單收件客戶。

回到頂端

比較資料準則

下表中的運算式示範如何在準則運算式中使用日期和相關函數。 如需有關輸入及使用日期值的詳細資訊,請參閱設定日期和時間欄位格式 (機器翻譯) 一文。

欄位 運算式 描述
ShippedDate #2/2/2017# 顯示 2017 年 2 月 2 日出貨的訂單。
ShippedDate Date() 顯示今天出貨的訂單。
RequiredDate Between Date( ) And DateAdd("m", 3, Date( )) 使用 Between...And 運算子及 DateAdd 和 Date 函數顯示今天起三個月內要出貨的訂單。
OrderDate < Date( ) - 30 使用 Date 函數顯示超過 30 天前的訂單。
OrderDate Year([OrderDate])=2017 使用 Year 函數顯示訂單日期為 2017 年的訂單。
OrderDate DatePart("q", [OrderDate])=4 使用 DatePart 函數顯示第四季的訂單。
OrderDate DateSerial(Year ([OrderDate]), Month([OrderDate])+1, 1)-1 使用 DateSerial、Year 和 Month 函數顯示每個月最後一天的訂單。
OrderDate Year([OrderDate])= Year(Now()) And Month([OrderDate])= Month(Now()) 使用 Year 和 Month 函數及 And 運算子顯示今年度本月份的訂單。
ShippedDate Between #1/5/2017# And #1/10/2017# 使用 Between...And運算子顯示 2017 年 1 月 5 日和 2017 年 1 月 10 日之間出貨的訂單。
RequiredDate Between Date( ) And DateAdd("M", 3, Date( )) 使用 Between...And 運算子顯示今天起三個月內要出貨的訂單。
BirthDate Month([BirthDate])=Month(Date()) 使用 Month 和 Date 函數顯示本月生日的員工。

回到頂端

尋找遺失的資料

下表中的運算式處理可能遺漏資訊的欄位,這類欄位可能包含 Null 值或零長度字串。 Null 值代表遺漏的資訊,並不代表零或任何值。 對資料庫的完整度而言,資訊遺漏是相當重要的概念,因此 Access 在產品設計中支援這個邏輯。 在真實世界中,資訊遺漏的情形層出不窮,即使只是暫時性的闕漏也是屢見不鮮 (像是新產品的價格未定)。 因此以真實世界實體 (例如業務) 為原型的資料庫也必須要能記錄遺漏的資訊。 您可以使用 IsNull 函數來判斷欄位或控制項是否包含 Null 值,然後使用 Nz 函數將 Null 值轉換為零。

欄位 運算式 描述
ShipRegion Is Null 顯示客戶 ShipRegion 欄位是 Null (遺漏) 值的訂單。
ShipRegion Is Not Null 顯示客戶 ShipRegion 欄位含有值的訂單。
Fax "" 顯示沒有傳真機的客戶訂單,並以零長度字串值在 Fax 欄位中顯示,而非使用 Null (遺漏) 值。

回到頂端

使用 Like 比對記錄模式

當您試著比對遵循模式的資料列時,運算 Like 子可提供許多彈性,因為您可以使用 Like 萬用字元來定義 Access 要比對的模式。 舉例來說, * (星號) 萬用字元可比對任何類型的字元序列,方便您找出所有以該字母開頭的名稱。 例如,您可以使用運算式 Like "S*" 來尋找所有以字母 S 開頭的名稱。如需詳細資訊,請參閱 文章 Like 運算子

欄位 運算式 描述
ShipName Like "S*" 尋找 ShipName 欄位中以字母 S 開頭的所有記錄。
ShipName Like "*Imports" 尋找 ShipName 欄位中以 “Imports” 字詞結尾的所有記錄。
ShipName Like "[A-D]*" 尋找 ShipName 欄位中,字母開頭為 A、B、C 或 D 的所有記錄。
ShipName Like "*ar*" 尋找 ShipName 欄位中包含字母序列 "ar" 的所有記錄。
ShipName Like "Maison Dewe?" 尋找 ShipName 欄位中符合下列條件的所有記錄:值的第一部分包含 “Maison”,而第二部分則由 5 個字母字串組成,其中前 4 個字母為 “Dewe” 且最後一個字母不明。
ShipName Not Like "A*" 尋找 ShipName 欄位中不以字母 A 開頭的所有記錄。

回到頂端

使用 SQL 彙總函數來比較資料列

若需選擇性加總、計數或計算平均值,您可以使用 SQL 或範圍彙總函數。 例如,若您只需計算落入特定範圍內的值,或結果評估為 Yes 的值,就能使用這類運算式。 有時候,您可能需要先查詢其他資料表的值,才能顯示該值。 下表中的範例運算式利用範圍彙總函數來執行一組值的計算,再以此結果做為查詢準則。

欄位 運算式 描述
Freight > (DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders")) 使用 DStDev 和 DAvg 函數顯示超過平均運費的所有訂單,以及運費的標準差。
Quantity > DAvg("[Quantity]", "[Order Details]") 使用 DAvg 函數顯示訂購數量超過平均訂購數量的產品。

回到頂端

使用子查詢比對欄位

您可以使用子查詢 (又稱為巢狀查詢) 來計算值並做為準則使用。 下表中的範例運算式會根據子查詢所傳回的結果來比對資料列。

欄位 運算式 顯示
UnitPrice (SELECT [UnitPrice] FROM [Products] WHERE [ProductName] = "Aniseed Syrup") 價格和茴芹糖漿價格相同的產品。
UnitPrice >(SELECT AVG([UnitPrice]) FROM [Products]) 單價高於平均值的產品。
Salary > ALL (SELECT [Salary] FROM [Employees] WHERE ([Title] LIKE "*Manager*") OR ([Title] LIKE "*Vice President*")) 薪水高於所有職稱為「經理」或「副總裁」的每個業務代表的薪水。
OrderTotal: [UnitPrice] * [Quantity] > (SELECT AVG([UnitPrice] * [Quantity]) FROM [Order Details]) 總金額高於平均訂單價值的訂單。

回到頂端

更新查詢

使用更新查詢來修改資料庫中一或多個現有欄位的資料。 例如,您可以整個取代或刪除所有相符的值。 下表說明在更新查詢中使用運算式的一些方式。 在查詢設計方格的列中 Update To ,針對您要更新的欄位使用這些運算式。

如需有關建立更新查詢的詳細資訊,請參閱建立和執行更新查詢 (機器翻譯) 一文。

欄位 運算式 結果
標題 "Salesperson" 將文字值變更為銷售人員。
ProjectStart #8/10/17# 將日期值變更為 2017 年 8 月 10 日。
已停用 Yes 將 Yes/No 欄位從 No 值變更為 Yes。
PartNumber "PN" & [PartNumber] 在每個指定的零件編號開頭加上 PN。
LineItemTotal [UnitPrice] * [Quantity] 計算 UnitPrice 和 Quantity 相乘的結果。
Freight [Freight] * 1.5 增加百分之 50 的運費。
銷售 DSum("[Quantity] * [UnitPrice]", "Order Details", "[ProductID]=" & [ProductID]) 若目前資料表中的 ProductID 值與訂單詳細資料資料表中的 ProductID 值相符,就根據 Quantity 和 UnitPrice 相乘的結果更新銷售總額。
ShipPostalCode Right([ShipPostalCode], 5) 截斷最左邊的字元,保留最後 5 個字元。
UnitPrice Nz([UnitPrice]) 在 UnitPrice 欄位中將 Null (未定義或未知) 值變更為零 (0)。

回到頂端

SQL 陳述式

結構化查詢語言 (SQL) (SQL) 是 Access 使用的查詢語言。 您在 [查詢設計] 檢視中建立的每個查詢,都能以 SQL 表達。 若要查看任何查詢的 SQL 陳述式,請選取 [檢視] 功能表上的 [SQL 檢視]。 下表顯示使用運算式的範例 SQL 陳述式。

使用運算式的 SQL 陳述式 結果
SELECT [FirstName],[LastName] FROM [Employees] WHERE [LastName]="Danseglio"; 針對姓氏為「鐘」的員工顯示其 FirstName 欄位和 LastName 欄位中的值。
SELECT [ProductID],[ProductName] FROM [Products] WHERE [CategoryID]=Forms![New Products]![CategoryID]; 若記錄中的 CategoryID 值與開啟的 New Products 表單中特定的 CategoryID 值相符,就顯示 Products 資料表中 ProductID 和 ProductName 欄位中的值。
SELECT Avg([ExtendedPrice]) AS [Average Extended Price] FROM [Order Details Extended] WHERE [ExtendedPrice]>1000; 針對 ExtendedPrice 欄位值大於 1000 的訂單計算平均總價,然後在名為 Average Extended Price 的欄位中顯示。
SELECT [CategoryID], Count([ProductID]) AS [CountOfProductID] FROM [Products] GROUP BY [CategoryID] HAVING Count([ProductID])>10; 在名為 CountOfProductID 的欄位中,針對具有 10 個以上產品的類別計算其產品總數並加以顯示。

回到頂端

資料表運算式

在資料表中,兩種最常見的運算式使用方式為指派預設值以及建立驗證規則。

欄位預設值

設計資料庫時,建議您為欄位或控制項指派預設值。 Access 之後就會在新記錄包含已建立欄位、或物件包含已建立控制項時提供該值。 下表中的運算式顯示欄位或控制項的預設值範例。 如果控制項已繫結至資料表中的欄位,且欄位有預設值,則會優先使用控制項的預設值。

欄位 運算式 預設欄位值
Quantity 1 1
Region "MT" MT
Region "New York, N.Y." 紐約, 紐約州 (請注意,若值含有標點符號,就必須以引號括住)。
Fax "" 根據預設,零長度字串代表欄位是空白而非 Null 值。
訂單日期 Date( ) 今天的日期
DueDate Date() + 60 今天以後第 60 天的日期

回到頂端

欄位驗證規則

您可以使用運算式為欄位或控制項建立驗證規則。 Access 會在資料輸入到欄位或控制項時強制執行這項規則。 若要建立驗證規則,請修改 ValidationRule 欄位或控制項的屬性。 您也可以考慮設定 ValidationText 屬性,以供 Access 在違反驗證規則時顯示的文字。 如果您未設定屬性, ValidationText Access 會顯示預設的錯誤訊息。

下表範例顯示屬性的 ValidationRule 驗證規則運算式,以及屬性的 ValidationText 相關文字。

ValidationRule 屬性 ValidationText 屬性
<> 0 請輸入非零值。
0 Or > 100 值必須是 0 或大於 100。
Like "K???" 值必須是以字母 K 開頭的四個字元。
< #1/1/2017# 輸入的日期必須早於 2017 年 1 月 1 日。
>= #1/1/2017# And < #1/1/2008# 日期必須在 2017 年內。

如需驗證資料的詳細資訊,請參閱建立驗證規則以驗證欄位中的資料一文。

回到頂端

巨集運算式

在某些情況下,建議您只在特定條件成立時,才執行巨集中的某個巨集指令或一連串巨集指令。 舉例來說,假設您只想在 Counter 文字方塊為 10 時才執行某個指令。 您可以使用運算式在 If 區塊中定義條件:

[Counter]=10

和屬性一樣 ValidationRule ,If 區塊中的運算式也是條件式運算式。 它必須解析為 或 TrueFalse。 只有當條件為 True 時,系統才會執行指令。

使用這個運算式來執行指令 If
[City]="Paris" 若表單欄位中的 City 值為巴黎,系統就會執行巨集。
DCount("[OrderID]", "Orders") > 35 若 Orders 資料表中的 [OrderID] 欄位超過 35 個項目。
DCount("*", "[Order Details]", "[OrderID]=" & Forms![Orders]![OrderID]) > 3 若 Order Details 資料表中有超過 3 個項目的 OrderID 欄位與 Orders 表單的 OrderID 欄位相符。
[ShippedDate] Between #2-Feb-2017# And #2-Mar-2017# 若表單上 [ShippedDate] 欄位的值介於 2017 年 2 月 2 日和 2017 年 3 月 2 日之間時,系統就會執行巨集。
Forms![Products]![UnitsInStock] < 5 Products 表單上的 [UnitsInStock] 欄位值小於 5。
IsNull([FirstName]) 若表單上的 FirstName 值為 Null (沒有值) 時,系統就會執行巨集。 也就是說,此運算式的作用等同於 [FirstName] 為 Null。
[CountryRegion]="UK" And Forms![SalesTotals]![TotalOrds] > 100 若表單上 CountryRegion 欄位值為英國,且 SalesTotals 表單上的 TotalOrds 欄位值大於 100 時,系統就會執行巨集。
[CountryRegion] In ("France", "Italy", "Spain") And Len([PostalCode])<>5 若表單上 CountryRegion 欄位值為法國、義大利或西班牙,且郵遞區號長度不是 5 個字元時,系統就會執行巨集。
MsgBox("Confirm changes?",1)=1 若您在 MsgBox 函數所顯示的對話方塊中按一下 [確定]。 若您在對話方塊中按一下 [取消],Access 就會略過指令。

回到頂端

另請參閱