Access 2016中基于独立表的双条件DSUM求和需求
Access 2016 基于COLUMN-A分组的DSUM求和实现
核心需求
对tbl-Reserves表中同一COLUMN-A值的所有COLUMN-AMT列求和,比如:
COLUMN-A=ABCDEFGHSDR的记录总和为$800COLUMN-A=RRRRRRRRR2的记录总和为$95
实现方法
DSUM函数的语法为:DSum(要汇总的字段, 数据源, 筛选条件),核心是用COLUMN-A作为筛选条件,匹配同一值的所有记录。
1. 窗体中控件直接显示当前记录的分组总和
在frm-SavedCancellations窗体中添加一个文本框,设置其控件来源为:
=DSum("COLUMN-AMT", "tbl-Reserves", "COLUMN-A = '" & [COLUMN-A] & "'")
- 说明:
[COLUMN-A]会引用当前窗体记录的COLUMN-A值,自动筛选出同值的所有记录并对COLUMN-AMT求和。
2. 针对特定COLUMN-A值的固定求和
如果需要直接计算指定COLUMN-A的总和,可写死条件:
- 计算
ABCDEFGHSDR的总和:
=DSum("COLUMN-AMT", "tbl-Reserves", "COLUMN-A = 'ABCDEFGHSDR'")
- 计算
RRRRRRRRR2的总和:
=DSum("COLUMN-AMT", "tbl-Reserves", "COLUMN-A = 'RRRRRRRRR2'")
3. VBA代码中调用DSUM
如果要在VBA逻辑中获取求和结果,代码示例:
' 获取当前窗体记录对应的分组总和 Dim currentTotal As Currency currentTotal = DSum("COLUMN-AMT", "tbl-Reserves", "COLUMN-A = '" & Me![COLUMN-A] & "'") ' 获取指定COLUMN-A的总和 Dim abcTotal As Currency abcTotal = DSum("COLUMN-AMT", "tbl-Reserves", "COLUMN-A = 'ABCDEFGHSDR'") Dim rTotal As Currency rTotal = DSum("COLUMN-AMT", "tbl-Reserves", "COLUMN-A = 'RRRRRRRRR2'")
注意事项
COLUMN-A是文本类型,条件中必须用单引号包裹匹配值;若为数值类型则无需单引号。- 数据源可直接用基础表
tbl-Reserves,也可用查询R-Totals,结果一致(因R-Totals基于tbl-Reserves)。
内容的提问来源于stack exchange,提问作者Datamint
相关产品推荐
相关产品推荐

