在Crystal Reports 2013中组织多个详细信息部分

时间:2018-09-10 18:00:42

标签: crystal-reports

我正在Crystal Reports 2013中创建一个报表,该报表将针对各种不同的视图显示相同的指标。我想在不同的细节部分中将它们垂直层叠。

我会尽力解释。我将第一个查询插入第一个报告详细信息(“ Details a”);该查询有两行。

然后我将类似的查询插入另一个详细信息部分(“详细信息B”)。我希望将详细信息A中的每一行显示在报告的顶部,然后在其下方显示“详细信息B”的每一行(因此:

第1行的详细信息

第2行的详细信息

详细信息B第1行

详细信息B第2行

我的问题是,当我转到“预览”时,行的组织方式如下:

第1行的详细信息

详细信息B第1行

第2行的详细信息

详细信息B第2行

总有没有格式化“详细信息”部分的格式,以便我可以使每个“详细信息”部分中的所有行彼此相邻?请让我知道更多信息是否有帮助。

2 个答案:

答案 0 :(得分:0)

使用2个子报表(插入,子报表)。 这将允许子报表1显示来自一个数据源的所有明细行。 子报表2将显示另一个数据源中的所有明细行。

答案 1 :(得分:0)

正在发生的是笛卡尔积。换句话说,第一个查询的集合带来2行,而第二个查询的集合带来另外2行。因此,2x2 = 4行。

要注意的另一件事是,细节A和B不是独立的。我知道那不是很直观。让我尝试告诉您Crystal如何处理该问题(这不是它的真正工作原理,只是帮助您理解它的一种观点):

  1. Crystal执行您的两个查询。 第一个查询的结果有2个项目,即1和2。 第二个查询的结果还有另外两个项目,即3和4。
  2. 水晶检查两个结果集之间的链接。由于-我想-您没有告诉Crystal那个链接是什么,所以Crystal假设没有链接,因此它使笛卡尔乘积产生4行,即1 / 3、1 / 4、2 / 3、2 / 4 。
  3. 然后Crystal做出一种“ foreach”声明。因此,对于4行中的每行,它都会打印一个details部分的实例。
  4. 由于您的详细信息部分有2个子部分,即详细信息A和详细信息B,因此最终会打印4个详细信息,如您所见:
1 //1st detail section, subsection A, field from 1st result set
3 //1st detail section, subsection B, field from 2nd result set
1 //2nd detail section, subsection A, field from 1st result set
4 //2nd detail section, subsection B, field from 2nd result set (second item)
2 //3st detail section, subsection A, field from 1st result set (second item)
3 //3st detail section, subsection B, field from 2nd result set
2 //4nd detail section, subsection A, field from 1st result set (second item)
4 //4nd detail section, subsection B, field from 2nd result set (second item)

所以,正如@MilletSoftware指出的那样(我在写这篇文章的时候,哈哈),最简单的解决方案是使用两个子报表。