代码之家  ›  专栏  ›  技术社区  ›  pgras

MS访问组的总和,但不包括详细信息

  •  2
  • pgras  · 技术社区  · 17 年前

    我试图通过以下方式计算MS Access报告中的总和:

    • Group1标题-标签

      • Group2header-值
        • 细节-示例
      • Group2header-值
        • 细节-示例

    不知何故,当出现更多细节行时,group1footer中的总和计算不正确(为每个细节添加值)。

    (
        (
            (sl_ticketdetail.weight,0) * sl_ticketdetail.amount 
            - (
                SELECT SUM(sl_invoicedetail.amount)
                FROM sl_invoicedetail 
                WHERE ticketdetailid = sl_ticketdetail.ticketdetailid
            )
            / 1000
        )
        * sl_ticketdetail.cost
    )
    / 1000
    

    知道会出什么问题吗?

    3 回复  |  直到 14 年前
        1
  •  1
  •   BIBD    17 年前

    你是说你得到的结果是这样的:

    Group 1a
        Group 2a
            Foo1         1
            Foo2         1
            foo3         2
        Group 2a Sum   4
        Group 2b
            Foo1         3
            Foo2         3
        Group 2a Sum   6
    Group 1a Sum    10
    Group 1b
        Group 2a
            Foo1         4
            Foo2         1
            foo3         2
        Group 2a Sum   7
        Group 2b
            Foo1         4
            Foo2         3
        Group 2a Sum   14
    Group 1b Sum    21
    

    这是我所期望的行为。我能做到这一点 =Sum([value]) 在每个组页脚的未绑定字段中(甚至在报表页脚中)。

    您是否已使用与数据源相同的名称标记详细信息的值字段(或摘要字段)?有时,如果您的字段与绑定数据源的名称相同,MS Access会有奇怪的行为(我倾向于稍微重命名它们,所以我确定我在代码中指的是什么)。

        2
  •  0
  •   DJ.    17 年前

    由于您已经在查询中预先计算了Group2总和,因此每行结果都会重复这些总和,因此无法(如您所发现的)用于计算GROUP1总计。

    你有两个解决方案

    我想说1)是最简单的-2)有点毛茸茸的,如果用户来回翻页,有时会导致总数不准确

        3
  •  0
  •   JeffO    17 年前

    您必须拥有主报告的记录源才能包含第2组的总计。然后,您需要一个具有不同记录源的子报告,该记录源位于详细级别。