查询在Microsoft软件报表设计器中使用聚合函数而不是递归组

时间:2012-03-01 19:58:06

标签: recursion aggregate rdlc

我必须指出,我在Microsoft Access以外的报告方面相当新,并且是网站的新手,所以请耐心等待我!

根据必要项目,我的数据对象具有: CategoryID,ParentCategoryID,TransactionID,TransactionDate,SplitID,CurrencyID和Value。

我认为这不相关,但以防万一 -

  • Split有一个Category和一个Value,其中一个属性属于一个Transaction。
  • 同一类别和类别可能存在多个拆分。交易 不同的,或相同的,值(支持其他数据的不同组合 我没有列出的项目。)
  • 一个Transaction有一个TransactionDate和一个CurrencyID,所以所有Splits都有 属于交易的货币为同一货币。
  • 类别以递归方式属于类别。

可以在递归层次结构的任何级别为拆分分配一个类别,我的问题的关键是在相应的类别标题下报告交易/拆分详细信息,子总计包括所有这些详细信息和总计所有儿童类别。

所以,我有一个Detail行组,其中包含所有不相关的辅助数据项和同一行上的TransactionIDGroup行组。然后,我有一个基于CategoryID的CategoryGroup行组,其父级为ParentCategoryID,用于处理数据的递归性质,以及CurrencyIDGroup列组,用于处理可能涉及的多种货币。

同样在CategoryIDGroup行组中,整个行的值单元格包含表达式。

如果我将该表达式保留为= Sum(Fields!AccountValue.Value),那么报告很好地总计每个货币列的值,以获取每个类别(默认范围)中的所有详细信息,所以我认为我需要使Sum'递归'。但是,如果没有指定范围,您似乎无法指定可选的Recursive参数。

如果我将范围指定为CategoryIDGroup,则会得到所有零子总数。如果我使用CurrencyIDGroup,我会得到每一个与Currency相同的报告总数。其他任何一个都会给我一个构建错误或合计货币报告总数。

我遇到的另一个问题是,递归子类别组按顺序报告在父类别组下面(因此,在标题行之外,详细信息行和总行,而不是在组内。但是,如果我可以获得为了反映孩子们以及那个级别的细节,我会很高兴,即使在你意识到发生了什么之后似乎也不会加起来。

我想到的是:

Category A
Transaction 1 10/02/2011   ......................    £100.00
                           ----------------------     £14.50
Transaction 2 18/03/2011   ......................               $159.34

   Category Ai
Transaction 3 18/06/2011   ----------------------    £295.60
   Total Category Ai                                 £295.60
Total Category A                                     £410.10    $159.34*

但我得到的是:

Category A
Transaction 1 10/02/2011   ......................    £100.00
                           ----------------------     £14.50
Transaction 2 18/03/2011   ......................               $159.34
Total Category A                                     £114.50    $159.34*

   Category Ai
Transaction 3 18/06/2011   ----------------------    £295.60
   Total Category Ai                                 £295.60

我想根本问题是 - 我问不可能吗?我是否需要采取不同的方法,或许还有详细的子报告?我想知道在每个类别级别的数据对象中包含子类别的值的总和,但是有什么简单的我缺少吗?

在几天撕掉我的头发之后,任何指向正确方向的人都会非常感激:)

1 个答案:

答案 0 :(得分:0)

我不知道我是否遗漏了一些简单的东西,但通过在数据对象中包含另一个属性,即每种货币的所有子类别的总和,并包括一个用于打印的新行,解决了我满意的问题。那个领域的总和。以防其他人遇到同样的问题!