您可以对子表单中的计算字段求和吗?
Posted
技术标签:
【中文标题】您可以对子表单中的计算字段求和吗?【英文标题】:Can You Sum Calculated Fields in a Subform? 【发布时间】:2020-07-31 22:59:24 【问题描述】:我正在尝试汇总一个子表单,以便将值提升到主表单。
在子表单中,用户输入:UnitPrice
,格式为Currency
和Decimal Places 0
和Quantity
,格式为General Number
和Decimal 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])
不确定这是最好的方法,但它对我有用。
【讨论】:
以上是关于您可以对子表单中的计算字段求和吗?的主要内容,如果未能解决你的问题,请参考以下文章