如何从子表单中获取主表单中的总计

时间:2017-09-07 04:16:31

标签: ms-access access-vba

这是最终输出应该如何显示的屏幕截图。

但是,在屏幕截图中,您会发现购买总额(计算文本标签)是第一个订单描述总计(在表单级别计算)的总和:Final Form view section display

上面的截图结果是此公式的输出

=[OrderDescription_tbl].[Form]![Total]

如果我使用这个公式

=Sum([OrderDescription_tbl].[Form]![Total])

输出为 #Error

我做了故障排除,

  1. 我使用了在子窗体的页脚创建了一个总计 Sum函数和可见参数设置为No并且想要 将输出引用到主表单购买总计。如何解决这个问题?
  2. 但是,在屏幕截图中,您将看到框的数量 count(未计算且是表列),我使用了相同的Sum() order_description子表单中的函数。它给出了正确的 输出。为什么同一功能的输出存在差异  一个是针对非计算表格列而另一个是计算表格文本标签?
  3. 我也使用过这个公式

    =IIf([OrderDescription_tbl].[Form]![Total]>0,Sum([OrderDescription_tbl].[Form]![Total]),0)
    
  4. 输出仍然是#Error

    1. 我使用了一个查询来计算每个订单项的总和,并尝试将此查询引用为 a)= Sum([Query1]![Expr1])收到#Error b)[Query1]![Expr1]收到#Name?

3 个答案:

答案 0 :(得分:2)

作为Kostas提出的DSum解决方案的替代方案,您可以使用以下解决方法:

  • 在子窗体的页脚中,插入一个带有=Sum([Total])公式的textBox,将textBox命名为BigTotal(或任何你想要的)
  • 在主窗体中,请参阅该控件:=mySubFormControl.Form!BigTotal
  • 如果需要,隐藏子窗体的页脚。

如果您有大型数据集,这应该比DSum快。此外,如果子窗体具有嵌入式查询作为其recordSource,则可以避免创建queryDef。

答案 1 :(得分:0)

尝试DSum()功能:

=DSum("[Total]",[OrderDescription_tbl].[Form].[RecordSource])

答案 2 :(得分:0)

谢谢!我只能使用现有结构解决它。在这方面我引用了Northwind数据库。虽然我的数据库会比Northwind更具体和不同,Northwind的某些方面确实给了我一些关于改变的提示。诀窍是 - 我在像unit_rate这样的数字列上修改了几个查找(这个unit_rate引用了包含我们公司产品的产品组合表)。一次,我删除了这些列值的查找方面,#Error以及Name?错误自动解决。我创建了一个总计,其中Visible参数在订单描述子表单中设置为No,并将此表单的输出引用到外部表单中的grand_total文本标签,如共享的屏幕截图所示。感谢您对@ Ren Kessler的支持,我将分享这个也是Stackoverflow,以便其他人可以从我的案例场景中获取建议。 Ren Kessler我将以其他方式使用您的方法,可能在此开发方案中,但对于其他一些上下文。我发现它非常有趣,我还没有尝试过。除了我的回复,我也想引用你和你的解决方法。Total_Calculation_subform internal_view_Expression_builder_for_grandtotal_textlabel

这是Ren Kessler(Facebook小组成员)给出的解决方案:"我以一种非常复杂的方式解决了它。我希望有人有比我更好的解决方案。

我在表单上创建了一系列字段(不是表格中的字段,只是在表单上),它引用了子表单上的字段。然后我使用这些表单字段执行了所有数学运算。这是我能找到的最简单的方法。

看起来很笨拙,但很有效。同样,它使报表(在我的例子中是发票)中使用这些字段变得容易。

在之前的版本中,我没有必要这样做。我拿了一个2002应用程序,数学在子表单上工作,并在2016年使用完全相同的步骤,得到#error,就像你一样。这个系统解决了它,但它看起来并不合适。"