DSum 函数

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

可以使用 DSum 函数计算指定记录集中一组值的总和, (域) 。 在 Visual Basic for Applications (VBA) 模块、宏、查询表达式或计算控件中使用 DSum 函数。

例如,可以在查询的计算字段表达式中使用 DSum 函数来计算特定员工在一段时间内的总销售额。 或者,可以使用计算控件中的 DSum 函数来显示特定产品的正在运行的销售额总和。

语法

DSum (expr、域 [, criteria] )

DSum 函数语法具有以下参数:

参数 说明
expr 必需。 一个表达式,用于标识要汇总其值的数值字段。 它可以是标识表或查询中的字段的字符串表达式,也可以是对该字段中的数据执行计算的表达式。 在 expr 中,可以在表中包括字段的名称、窗体上的控件、常量或函数。 如果 expr 包含函数,它可以是内置函数或用户定义的函数,但不能是其他域聚合函数或 SQL 聚合函数。
必需。 一个字符串表达式,标识构成域的记录集。 它可以是表名,也可以是不需要参数的查询的查询名称。
criteria 可选。 用于限制执行 DSum 函数的数据范围的字符串表达式。 例如, 条件 通常等效于 SQL 表达式中的 WHERE 子句,而不使用 WHERE 一词。 如果省略 条件则 DSum 函数针对整个域评估 expr条件中包含的任何字段也必须是域中的字段;否则,DSum 函数返回 Null。

    

备注

如果没有记录满足 criteria 参数,或者域不包含任何记录, 则 DSum 函数返回 Null。

无论是在宏、模块、查询表达式还是计算控件中使用 DSum 函数,都必须仔细构造 criteria 参数,以确保正确计算它。

可以使用 DSum 函数在查询的 Criteria 行、查询表达式的计算字段或更新查询的 “更新到 ”行中指定条件。

注意

可以在总计查询的计算字段表达式中使用 DSumSum 函数。 如果使用 DSum 函数,则会在对数据进行分组之前计算值。 如果使用 Sum 函数,则会在计算字段表达式中的值之前对数据进行分组。

当需要显示窗体或报表的记录源之外的字段的一组值的总和时,你可能想要使用 DSum 函数。 例如,假设有一个窗体显示有关特定产品的信息。 可以使用 DSum 函数在计算控件中维护该产品的运行总销售额。

提示

如果需要在报表的控件中维护正在运行的总计,则可以使用该控件的 RunningSum 属性,前提是该控件所基于的字段包含在报表的记录源中。 使用 DSum 函数在窗体上维护正在运行的总和。

注意

使用此函数时,不包括 对域中 记录的未保存更改。 如果希望 DSum 函数基于更改的值,必须先通过单击“开始”选项卡上“记录”组中的“保存记录”,将焦点移到另一条记录,或使用 Update 方法保存更改。

示例

在表达式中使用 DSum 函数可以在更新查询的“更新到”行中使用域函数 (,例如 DSum) 。 例如,假设你想要在 Products 表中按产品跟踪当前销售额。 可以将名为 SalesSoFar 的新字段添加到 Products 表,并运行更新查询以计算正确的值并更新记录。 为此,请基于“产品”表创建新查询,然后在“ 设计 ”选项卡上的“ 查询类型 ”组中,单击“ 更新”。 将 SalesSoFar 字段添加到查询网格,并在 “更新到 ”行中键入以下内容:

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

运行查询时,Access 会根据订单详细信息表中的信息计算每个产品的销售额总额。 每个产品的销售额总和将添加到“产品”表中。

在 VBA 代码中使用 DSum 

注意

下面的示例演示了如何在 Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在搜索旁边的下拉列表中选择“开发人员参考”,并在搜索框中输入一个或多个术语。

以下示例汇总了运往英国的订单的“货运”字段中的值。 域是 Orders 表。 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#")