您可以使用 DSum 函數來計算指定記錄集合中一組值的總和, ( 範圍) 。 在 Visual Basic for Applications (VBA) 模組、 巨集、查詢運算式或查詢 計算控制項。

例如,您可以在查詢的計算欄位運算式中,使用 DSum 函數來計算特定員工一段時間的總銷售額。 或者,您可以在計算控制項中使用 DSum 函數來顯示特定產品的銷售總和。

語法

DSum ( expr, domain [, criteria])

DSum 函數語法具有以下引數:

引數

描述

expr

必要。 用來識別要合計其值的數值欄位的運算式。 它可以是識別資料表或查詢中欄位的 字串運算式,或可以是在該欄位的資料上執行計算的運算式。 在 expr 中,您可以加入資料表中的欄位名稱、表單上的控制項、常數或函數。 expr 可包含內建或使用者定義的函數,但不得是另一個網域彙總或 SQL 彙總函數。

domain

必要。 識別構成範圍之記錄集的字串運算式。 它可以是資料表名稱,或不需要參數之查詢的查詢名稱。

criteria

可省略。 用來限制執行 DSum 函數之資料範圍的字串運算式。 例如,criteria 通常相當於 SQL 運算式中的 WHERE 子句,但沒有 WHERE 字樣。 如果省略criteria,DSum函數會針對整個網域評估expr。 準則中包含的任何 欄位 也必須是網域中的 欄位;否則 ,DSum 函數 會返回 Null。


註解

如果沒有記錄符合 準則 引數,或網域不包含任何記錄 ,DSum 函數會 返回 Null。

無論您是在宏、模組、查詢運算式或計算控制項中使用 DSum 函數,都必須仔細建構 準則 引數,以確保能正確評估。

您可以使用DSum函數在查詢的 Criteria資料列、查詢運算式的計算欄位或查詢的更新至資料列指定準則 更新查詢。

附註: 您可以在公式中的計算欄位運算式中,使用 DSumSum 函數 合計查詢。 如果您使用 DSum 函數 ,值會先計算,然後再將資料分組。 如果您使用 Sum 函數,資料會先分組,再評估域運算式中的值。

當您需要顯示表單或報表的記錄來源中欄位一組值的總和時,您可能會想要使用 DSum 函數。 例如,假設您有顯示特定產品相關資訊的表單。 您可以使用 DSum 函數 ,在計算控制項中維護該產品的總銷售額。

祕訣

如果您需要在報表上的控制項中維持一個總和,您可以使用該控制項的 RunningSum 屬性 ,如果報表的記錄來源中包含該控制項所根據的欄位。 使用 DSum 函數維護表單上的執行加總。

附註: 當您使用此函數時,不會包含網域中記錄的未保存變更。 如果您希望DSum函數以變更的值為基礎,您必須先按一下首頁上之記錄群組中的儲存記錄、將焦點移動到另一個記錄,或是使用更新方法來儲存變更。

範例

在運算式中使用 DSum 函數    您可以使用網域函數 (更新查詢) 資料列的DSum函數。 例如,假設您要根據產品資料表中的產品追蹤目前銷售額。 您可以在 Products 資料表中新增名為 SalesSoFar 的新欄位,然後執行更新查詢來計算正確的值並更新記錄。 若要這麼做,請根據 [產品」 資料表建立新查詢,然後按一下 [查詢類型」群組中的[更新 將 SalesSoFar 欄位新增到查詢格線,然後于更新至資料列 輸入下列專案

DSum("[Quantity]*[UnitPrice]", "Order Details", _
"[ProductID] = "& [ProductID])

當您執行查詢時,Access 會根據來自訂單詳細資料資料表的資訊,計算每個產品的總銷售額。 每個產品的銷售總和會新增到產品資料表。

在 VBA 程式碼中使用DSum    

附註: 下列範例示範如何在 Visual Basic for Applications (VBA) 模組中使用此函數。 如需使用 VBA 的詳細資訊,請在 [搜尋] 旁的下拉式清單中選取 [開發人員參考],並在 [搜尋] 方塊中輸入一個或多個字詞。

下列範例會合計出貨至英國之訂單的 Freight 欄位中的值。 網域是一個訂單資料表。 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#")

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Office Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×