你可以使用 DSum 函數計算指定記錄集合中一組值的總和, (域) 。 在 Visual Basic for Applications 中使用 DSum 函式 (VBA) 模組、巨集、查詢表達式或計算控制項。
例如,您可以在查詢的導出欄位運算式中使用 DSum 函數來計算特定員工在一段時間內的總銷售額。 或者,您可以在計算控制項中使用 DSum 函數,顯示特定產品的銷售累計總和。
語法
DSum (expr, domain [, criteria] )
DSum 函數語法具有下列引數:
| 引數 | 描述 |
|---|---|
| expr | 必要。 運算式,用來識別您要計算總計的數值欄位。 它可以是用來識別資料表或查詢欄位的字串表達式,也可以是對該欄位資料進行計算的表達式。 在 expr 中,您可以加入資料表中的欄位名稱、表單上的控制項、常數或函數。 expr 可包含內建或使用者定義的函數,但不得是另一個網域彙總或 SQL 彙總函數。 |
| domain | 必要。 識別構成範圍之記錄集的字串運算式。 它可以是資料表名稱,或不需要參數之查詢的查詢名稱。 |
| criteria | 可省略。 用來限制執行 DSum 函數的資料範圍的字串運算式。 例如,criteria 通常相當於 SQL 運算式中的 WHERE 子句,但沒有 WHERE 字樣。 如果省略 criteria,則 DSum 函數會針對整個範圍評估 expr。 包含在 criteria 中的任何欄位也必須是 domain 中的欄位,否則,DSum 函數會傳回 Null。 |
註解
然而,如果沒有任何記錄可以滿足 criteria 引數,或者如果範圍內沒有任何記錄,則 DSum 函數會傳回 Null。
無論您是在巨集、模組、查詢運算式或計算控制項中使用 DSum 函數,您都必須仔細建構 criteria 引數以確保能正確進行評估。
你可以使用 DSum 函式在查詢的 Criteria 列、查詢表達式的計算欄位,或更新查詢的 Update To 列指定條件。
注意
你可以在總數查詢中,使用計算欄位表達式中的 DSum 或 Sum 函數。 如果您使用 DSum 函數,值會在資料分組之前進行計算。 如果您使用 Sum 函數,資料會在評估欄位運算式中的值之前進行分組。
當您需要顯示非表單或報表記錄來源之欄位的一組值總和時,建議您使用 DSum 函數。 例如,假設您有顯示特定產品相關資訊的表單。 您可以使用 DSum 函數,在計算控制項中維護該產品的銷售累計總額。
祕訣
如果需要在報表的控制項上維護累加值,當計算的欄位屬於報表的記錄來源時,即可使用該控制項的 RunningSum 屬性。 使用 DSum 函數在表單上維持執行中的加總。
注意
使用這個函數時,不會包括 domain 中未儲存的記錄變更。 如果想要 DSum 函數以變更的值為基礎,您必須先儲存變更,方法是按一下 [常用] 索引標籤上 [記錄] 中的 [儲存記錄],將焦點移到另一筆記錄,或是使用 [更新] 方法。
範例
在表達式中使用 DSum 函數你可以在更新查詢的「更新到」列中使用領域函式 (DSum) 。 例如,假設您想要在 [產品] 資料表中依產品追蹤目前的銷售量。 您可以將名為 SalesSoFar 的新欄位新增至 [產品] 資料表,並執行更新查詢以計算正確的值並更新記錄。 若要執行此動作,請根據 [產品] 資料表建立新的查詢,然後在 [設計] 索引標籤上的 [查詢類型] 群組中按一下 [更新]。 將 SalesSoFar 欄位新增至查詢方格,然後在 [更新至] 列中輸入下列內容:
DSum("[Quantity]*[UnitPrice]", "Order Details", _
"[ProductID] = "& [ProductID])
當您執行查詢時,Access 會根據 [訂單詳細資料] 資料表中的資訊,計算每個產品的總銷售額。 每個產品的銷售總和會新增至 [產品] 資料表。
在 VBA 程式碼中使用 DSum
注意
下列範例示範如何在 Visual Basic for Applications (VBA) 模組中使用此函數。 如需使用 VBA 的詳細資訊,請在 [搜尋] 旁的下拉式清單中選取 [開發人員參考],並在 [搜尋] 方塊中輸入一個或多個字詞。
下列範例會針對運送到英國之訂單的 [運費] 欄位中的值計算總計。 範圍是 [訂單] 資料表。 criteria 引數會將結果限制為 ShipCountryRegion 等於 UK 的記錄。
Dim curX As Currency
curX = DSum("[Freight]", "Orders", _
"[ShipCountryRegion] = 'UK'")
下一個範例會使用兩個不同的準則來計算總計。 請注意,字串運算式中會包含單引號 (') 和數字符號 (#),因此當字串串連時,字串常值會以單引號括住,日期會以井號括住。
Dim curX As Currency
curX = DSum("[Freight]", "Orders", _
"[ShipCountryRegion] = 'UK' AND _
[ShippedDate] > #1-1-95#")