【问题标题】:How to get the grand total in main form from subform如何从子表单中获取主表单的总计
【发布时间】:2017-09-08 12:10:31
【问题描述】:

这是最终输出的屏幕截图。

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

上面的截图结果就是这个公式的输出

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

如果我使用这个公式

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

输出是#Error

我做了故障排除,

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

    =IIf([OrderDescription_tbl].[Form]![Total]>0,Sum([OrderDescription_tbl].[Form]![Total]),0)
    

输出仍然是#Error

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

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

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

    • 在子表单的页脚中,插入带有=Sum([Total]) 公式的文本框,将文本框命名为BigTotal(或任何您想要的名称)
    • 在主窗体中,引用那个控件:=mySubFormControl.Form!BigTotal
    • 如果需要,可以隐藏子表单的页脚。

    如果您有大型数据集,这应该比 DSum 更快。此外,如果子表单有一个嵌入的查询作为它的记录源,则可以避免创建 queryDef。

    【讨论】:

    • 我确实尝试过这种方法,但它给出了#Error 或 Name?错误。感谢您的支持。我已经能够解决这个问题,并且我从 facebook 群组成员那里收到了另一种奇怪的解决方法,我将单独分享。
    • 您必须确保使用子表单 CONTROL 名称,而不是子表单名称,并且它应该可以工作。
    【解决方案2】:

    试试DSum()函数:

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

    【讨论】:

    • 我也尝试过这种方法,但它给出了#Error 或 Name?错误。感谢您的支持。我已经能够解决这个问题,并且我从 facebook 群组成员那里收到了另一种奇怪的解决方法,我将单独分享。
    【解决方案3】:

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

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

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

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

    在以前的版本中,我不必这样做。我拿了一个 2002 年的应用程序,其中数学在子表单上运行,并在 2016 年使用完全相同的步骤并得到#error,就像你一样。这个系统解决了它,但它看起来并不正确。”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      相关资源
      最近更新 更多