DSum 函数用于计算指定记录集(一个域)中的一组值的总和。可以在 Visual Basic、宏、查询表达式或计算控件中使用 DSum 函数。
例如,可以在查询的计算字段表达式中使用 DSum 函数来计算一段时期某个特定雇员的总销售额。也可以在计算控件中使用 DSum 函数来显示特定产品的动态销售总和。
DSum(expr, domain, [criteria])
DSum 函数具有以下参数:
参数 |
说明 |
expr |
表达式,用于标识要对其值作总计的字段。可以是指向表或查询中字段的字符串表达式,也可以是以该字段中的数据进行计算的表达式。在 expr 中可以包括表中字段的名称、窗体上的控件、常量或函数。如果 expr 包含函数,那么它可以是内置的,也可以是用户定义的,但不能是另一个域聚合函数或 SQL 聚合函数。 |
字符串表达式,代表组成域的记录集。可以是表名称或不需要参数的查询的查询名称。 |
|
criteria |
可选的字符串表达式,用于限制 DSum 函数执行的数据范围。例如,criteria 通常等价于 SQL 表达式中的 WHERE 子句,只是不含 WHERE 关键字。如果忽略 criteria,DSum 函数将在整个域范围内计算 expr。任何包含在 criteria 中的字段必须同时也是 domain 中的字段,否则 Dsum 函数将返回 Null。 |
如果没有记录满足 criteria 参数或者域中不包含任何记录,DSum 函数将返回 Null。
无论是在宏或模块、查询表达式或者在计算控件中使用 DSum 函数,都必须谨慎构造 criteria 参数以确保能够正确地进行计算。
在查询的“条件”行、查询表达式的计算字段中或更新查询的“更新到”行中,均可以使用 DSum 函数指定条件。
注释 可以在总计查询的计算字段表达式中使用 DSum 或 Sum 函数。如果使用 DSum 函数,将在数据分组之前计算总计值。如果使用 Sum 函数,则在分组之后计算字段表达式中值的总计值。
如果需要显示窗体或报表记录源以外的字段值的总和,可能需要使用 DSum 函数。例如,如果有一个窗体显示有关一种特定产品的信息。可以在计算控件中使用 DSum 函数来计算这种产品销售额的运行总和。
RunningSumDSum
注释 使用该函数时,将不包括对 domain 记录的未保存更改。如果希望 DSum 函数基于更改后的数据,必须先保存更改。方法是:单击“记录”菜单上的“保存记录”、将焦点移动到另一条记录,或使用 Update 方法。
下面的示例计算运往英国的订单的“Freight”字段的总计值。域为“Orders”表。criteria 参数将记录集的结果限制为“ShipCountry”等于 UK 的记录。
Dim curX As Currency
curX = DSum("[Freight]", "Orders", "[ShipCountry] = 'UK'")
下一个示例通过使用两个不同的条件来计算总计。注意单引号(')和数字符号(#)需要包括在字符串表达式中,使得字符串连接时,将原义字符串包含在单引号中,将日期包含在数字符号中。
Dim curX As Currency
curX = DSum("[Freight]", "Orders", _
"[ShipCountry] = 'UK' AND [ShippedDate] > #1-1-95#")
可以在更新查询的“更新到”行中使用域函数。例如,如果要跟踪“Products”表中各产品的当前销售情况,可以将一个名为 SalesSoFar 的新字段添加到“Products”表中,并运行一个更新查询来计算正确的值并更新记录。首先,基于“Products”表新建一个查询,再单击“查询”菜单上的“更新查询”。然后,将 SalesSoFar 字段添加到查询网格,并将下列内容输入到“更新到”行中:
DSum("[Quantity]*[UnitPrice]", "Order Details", "[ProductID] = " _
& [ProductID])
在运行查询时,Microsoft Access 将根据“Order Details”表中的信息计算每种产品的销售总量。每种产品的销售总和将添加到“Products”表中。