DSum 函數(shù)用于計(jì)算指定記錄集(一個(gè)域)中的一組值的總和。可以在 Visual Basic、宏、查詢表達(dá)式或計(jì)算控件中使用 DSum 函數(shù)。
例如,可以在查詢的計(jì)算字段表達(dá)式中使用 DSum 函數(shù)來計(jì)算一段時(shí)期某個(gè)特定雇員的總銷售額。也可以在計(jì)算控件中使用 DSum 函數(shù)來顯示特定產(chǎn)品的動(dòng)態(tài)銷售總和。
DSum(expr, domain, [criteria])
DSum 函數(shù)具有以下參數(shù):
參數(shù) |
說明 |
expr |
表達(dá)式,用于標(biāo)識(shí)要對(duì)其值作總計(jì)的字段。可以是指向表或查詢中字段的字符串表達(dá)式,也可以是以該字段中的數(shù)據(jù)進(jìn)行計(jì)算的表達(dá)式。在 expr 中可以包括表中字段的名稱、窗體上的控件、常量或函數(shù)。如果 expr 包含函數(shù),那么它可以是內(nèi)置的,也可以是用戶定義的,但不能是另一個(gè)域聚合函數(shù)或 SQL 聚合函數(shù)。 |
字符串表達(dá)式,代表組成域的記錄集??梢允潜砻Q或不需要參數(shù)的查詢的查詢名稱。 |
|
criteria |
可選的字符串表達(dá)式,用于限制 DSum 函數(shù)執(zhí)行的數(shù)據(jù)范圍。例如,criteria 通常等價(jià)于 SQL 表達(dá)式中的 WHERE 子句,只是不含 WHERE 關(guān)鍵字。如果忽略 criteria,DSum 函數(shù)將在整個(gè)域范圍內(nèi)計(jì)算 expr。任何包含在 criteria 中的字段必須同時(shí)也是 domain 中的字段,否則 Dsum 函數(shù)將返回 Null。 |
如果沒有記錄滿足 criteria 參數(shù)或者域中不包含任何記錄,DSum 函數(shù)將返回 Null。
無論是在宏或模塊、查詢表達(dá)式或者在計(jì)算控件中使用 DSum 函數(shù),都必須謹(jǐn)慎構(gòu)造 criteria 參數(shù)以確保能夠正確地進(jìn)行計(jì)算。
在查詢的“條件”行、查詢表達(dá)式的計(jì)算字段中或更新查詢的“更新到”行中,均可以使用 DSum 函數(shù)指定條件。
注釋 可以在總計(jì)查詢的計(jì)算字段表達(dá)式中使用 DSum 或 Sum 函數(shù)。如果使用 DSum 函數(shù),將在數(shù)據(jù)分組之前計(jì)算總計(jì)值。如果使用 Sum 函數(shù),則在分組之后計(jì)算字段表達(dá)式中值的總計(jì)值。
如果需要顯示窗體或報(bào)表記錄源以外的字段值的總和,可能需要使用 DSum 函數(shù)。例如,如果有一個(gè)窗體顯示有關(guān)一種特定產(chǎn)品的信息??梢栽谟?jì)算控件中使用 DSum 函數(shù)來計(jì)算這種產(chǎn)品銷售額的運(yùn)行總和。
RunningSumDSum
注釋 使用該函數(shù)時(shí),將不包括對(duì) domain 記錄的未保存更改。如果希望 DSum 函數(shù)基于更改后的數(shù)據(jù),必須先保存更改。方法是:單擊“記錄”菜單上的“保存記錄”、將焦點(diǎn)移動(dòng)到另一條記錄,或使用 Update 方法。
下面的示例計(jì)算運(yùn)往英國的訂單的“Freight”字段的總計(jì)值。域?yàn)椤癘rders”表。criteria 參數(shù)將記錄集的結(jié)果限制為“ShipCountry”等于 UK 的記錄。
Dim curX As Currency
curX = DSum("[Freight]", "Orders", "[ShipCountry] = 'UK'")
下一個(gè)示例通過使用兩個(gè)不同的條件來計(jì)算總計(jì)。注意單引號(hào)(')和數(shù)字符號(hào)(#)需要包括在字符串表達(dá)式中,使得字符串連接時(shí),將原義字符串包含在單引號(hào)中,將日期包含在數(shù)字符號(hào)中。
Dim curX As Currency
curX = DSum("[Freight]", "Orders", _
"[ShipCountry] = 'UK' AND [ShippedDate] > #1-1-95#")
可以在更新查詢的“更新到”行中使用域函數(shù)。例如,如果要跟蹤“Products”表中各產(chǎn)品的當(dāng)前銷售情況,可以將一個(gè)名為 SalesSoFar 的新字段添加到“Products”表中,并運(yùn)行一個(gè)更新查詢來計(jì)算正確的值并更新記錄。首先,基于“Products”表新建一個(gè)查詢,再單擊“查詢”菜單上的“更新查詢”。然后,將 SalesSoFar 字段添加到查詢網(wǎng)格,并將下列內(nèi)容輸入到“更新到”行中:
DSum("[Quantity]*[UnitPrice]", "Order Details", "[ProductID] = " _
& [ProductID])
在運(yùn)行查詢時(shí),Microsoft Access 將根據(jù)“Order Details”表中的信息計(jì)算每種產(chǎn)品的銷售總量。每種產(chǎn)品的銷售總和將添加到“Products”表中。