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

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

语法

DSum ( expr , domain [ ,criteria] )

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

参数

说明

expr

必需。 一个表达式,用于标识要计算其值的数值字段。 它可以是 字符串表达式 或查询中的字段的一个索引,或者是对该字段中数据执行计算的表达式。 在 expr中,可以包括表中的字段名称、窗体上的控件、常量或函数。 如果 expr 包含函数,则它可以是内置函数或用户定义的函数,但不能是另一个域聚合或SQL函数。

必需。 一个字符串表达式,标识构成域的记录集。 它可以是不需要参数的查询的表名或查询名称。

条件

可选。 用于限制执行 DSum 函数的数据范围的字符串表达式。 例如, 条件 通常等效于 SQL 表达式中的 WHERE 子句,不带 WHERE 一词。 如果省略条件,DSum函数将针对整个域计算 expr。 条件中包含的任何 字段 也必须是域中的 字段;否则 ,DSum 函数返回 Null。


备注

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

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

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

注意: 可以在计算公式的计算字段表达式中使用DSum或 Sum 总计查询 。 如果使用 DSum 函数,则先计算值,再对数据进行分组。 如果使用 Sum 函数, 则先对数据进行分组,再计算字段表达式中的值。

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

提示

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

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

示例

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

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

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

在 VBA 代码中使用DSum    

注意: 以下示例演示了在 VBA Visual Basic for Applications (模块) 函数。 有关使用 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!

×