MSAccess:从子窗体(在数据表视图中)调用总和以显示在主窗体的文本框中?

MSAccess: Call a summation from a subform (in datasheet view) to be displayed in a textbox on the master form?

抱歉,如果这个问题很简单,但我用谷歌搜索并没有找到满意的答案。

我正在创建工程成本估算器。我有一个将输入作为 ISO/Drawing 的表格,对于每个图号都有许多子表格,您可以在其中输入 ComponentDesc 并且应该吐退出一个 TotalHours 来完成号码。 I've included a picture (sorry for bad quality)

从图中可以看出,底部的table是datasheet模式下的子表单(通常隐藏在页脚),会计算出合适的Total MH(工时)用于输入到右侧子表单中的 ComponentDesc。我希望左侧(标题下方 "MH Totals for ISO/Drawings")的小(且不完整)文本框显示底部子表单的总计。

我一直在尝试使用 DSUM() 为文本框定义控件源,但它总是返回 #ERROR,如左侧文本框所示。现在我输入的是:

=DSum("[Total MH]","frm-PipingHandleMH")

在表达式构建器中。 [总 MH] 是我的字段,frm-PipingHandleMH 是底部的子表单。我试图用括号括起所有内容,但没有用(尽管我不确定括号通常是做什么的)。有什么建议吗?

DSum(以及所有域聚合函数)作用于 table 或查询。如果您想使用该方法,您需要参考该表单的来源并使用过滤器参数将 I.E. 限制为适当的记录。如果表单的数据源是 qry-PipingHandles 并且如果您当前尝试求和的表单正在显示小部件 4 的句柄,那么它将类似于:

=dsum("[Total MH]","qry-PipingHandles","[widgetID] = 4")

请注意,如果 4 是表单的当前状态,那么您需要将其传入,例如:

=dsum("[Total MH]","qry-PipingHandles","[widgetID] = " & [frm-PipingHandlesMH]![WidgetID].Value)

在表单中引用该字段并将其附加到用作 Dsum 源过滤器的字符串上。

另一种方法是将小计放在表单的页脚中(iirc 你实际上不需要显示页脚)然后从父表单引用该页脚控件。

需要方括号来区分包含空格或其他奇怪字符的名称,它们也可用于(例如在查询设计视图中)强制 Access 将某些内容视为名称而不是字符串文字。