DSum 函數

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

你可以使用 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 列指定條件。

注意

你可以在總數查詢中,使用計算欄位表達式中的 DSumSum 函數。 如果您使用 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#")