您可以对子表单中的计算字段求和吗?

Posted

技术标签:

【中文标题】您可以对子表单中的计算字段求和吗?【英文标题】:Can You Sum Calculated Fields in a Subform? 【发布时间】:2020-07-31 22:59:24 【问题描述】:

我正在尝试汇总一个子表单,以便将值提升到主表单。

在子表单中,用户输入:UnitPrice,格式为CurrencyDecimal Places 0Quantity,格式为General NumberDecimal Places 0

子表单在名为 Extension 的文本框中计算 Extension = [unitPrice]*[Quantity]

我在子表单的页脚中创建了一个未绑定的文本框,并插入了表达式=Sum([Extension])

我在运行子表单时得到#Error,显然,当我将值拉到顶层表单时出现错误。

此表单包含一个组合框,用于数据选择和其他基于表单的计算(不是表格中的计算字段...在那里吸取了教训)。这些都有效。

当我在页脚的未绑定文本框中简单地输入=[Extension] 时,我得到了预期的值。

当我输入 =Sum([unitPrice]*[Quantity]) 时,我得到了表单基础表中所有内容的总和(预期),但在运行顶层表单时,我得到了正确的值(即仅与顶层表单相关的值)。

这是预期的行为还是表明我的数据库存在设计问题?

一如既往的感谢。

编辑。添加了***表单和子表单保存详细信息的屏幕截图。

【问题讨论】:

聚合函数必须引用字段,而不是控件。 有没有更好的方法来实现我的目标?基础表中的计算字段似乎导致了我之前的问题。 可以在查询中计算并将查询用作RecordSource。表中的计算字段导致什么问题?但是=Sum([unitPrice]*[Quantity]) 应该可以正常工作。在表单上查看聚合计算真的很重要吗?报告确实是最好的工具。 再次感谢@June7。我正在构建一个销售机会跟踪器。对于输入行项目并查看基于分解的值(通过组合框完成)非常有用。我发布了一张更新的照片给你一个想法。我认为基础表中的计算字段导致 Access 试图覆盖键的设计问题。此外,根据我所做的阅读,似乎表格应该只用于数据,而计算应该在其他地方完成。对因子值求和(见上文)会引发错误。接下来将使用查询。 【参考方案1】:

我最终创建了一个查询 - qryItemTotals - 来进行所需的数学运算(计算扩展、Ptotal 和因子值)。然后我在顶层表单的值和因子值文本框中使用了 Dsum。

=DSum("Extension","[qryItemTotals]","[opportunityID]=" & [opportunityid])

=DSum("factoredvalue","[qryItemTotals]","[opportunityID]=" & [opportunityid])

不确定这是最好的方法,但它对我有用。

【讨论】:

以上是关于您可以对子表单中的计算字段求和吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在不直接更新模型的主干表单中拥有表单控件吗?

显示父对象时对子对象求和 - 核心数据

如何计算表中的字段数?

如何计算IP或ICMP协议首部里的checksum字段

表单设计器公式设计参考

我可以更新查询中的计算字段吗