Access Totals根据文本框动态更新



全部,

我在使用DSUM函数时遇到了一些合计问题。

我有一个主表单和一个子表单(详细信息(。子窗体显示在主窗体内的数据表视图中。

子表单包含OppL_ID(PK,自动编号(、Opp_ID(FK,存在多次(、产品、单位、单价。现在我想计算主表单上每个Opp_ID的总收入。在主表单中,选择了一个Opp_ID,在与该Opp_ID相连的子表单中显示了几行产品。如果用户在数据表视图中输入数据,则必须直接重新计算收入。

我首先尝试让公式在子窗体的页脚中工作。但我无法得到正确的收入总额。现在我已经在子表单的查询中添加了Revenue:[单位]*[单价]。这显示了每一行的收入。我想要每个Opp_ID的收入,所以我尝试了DSUM功能。

我尝试过的:

  1. 为了合计每个Opp_ID的收入,我使用了公式:DSUM([单位]*[单价];"Qry_lines";"[Opp_ID]="&[Opp_ID](
  2. 我还尝试了控件名称:DSUM([txt_Units]*[txt_Unit Price];"Qry_lines";"[Opp_ID="&[Opp_ID](
  3. 我也试着引用Revenue字段:DSUM([Revenue];"Qry_lines";"[Opp_ID]="&[Opp_ID](

所有公式都以结果结束:

示例:

Opp_ID 51由两条产品线组成,产品线A=单位1单价20。产品线B=单位2单价30。

结果:如果我站在A,总收入是40,而在产品B120的线上。

我只期望一个数字:1*20+2*30=80

看起来它计算的是收入乘以行数?我做错了什么?

我还尝试创建一个sum查询并引用它,例如:

选择Qry_lines.Opp_ID,Sum(Qry-lines.Revenue(作为SumRrevenue FROM Qry_lines Group by Qry_line.Opp_ID.

现在我得到了每个Opp_ID的正确数字。只有我不能在我的表格中引用这个?也许用Dlookup?

我想我已经接近了,但我真的无法确定。请帮忙:(

考虑:

使用文本框中的DLookup((域聚合函数表达式引用聚合查询。

在控件的AfterUpdate事件中将记录编辑提交到带有代码的表。一种方式是If Me.Dirty Then Me.Dirty = False

在同一事件中,在主窗体上使用"刷新"、"重新查询"或"重新计算"命令

最新更新