2011-11-30 16 views
1

我有一个类似于员工工作日志的内置报告。为每个员工创建一个组,其中包含他们完成的所有工作的逐项列表。在每位员工的最后,总工作时间和获得的金额显示在组页脚区域中。在整个报告结束时,显示所有员工的总时数和收入。JasperReports中的汇总乐队iReport

我也有一个单独的报告,这是同一信息的摘要,但没有详细信息。这是一份报告,其中列出了每位员工,工作时间和总收入。这与其他报告的组页脚中显示的信息基本相同。

两个报告都使用相同的SQL命令。我想将它们合并成一个报告,首先生成逐项工作日志,然后再详细总结。但我看不出有办法做到这一点。

其实,也许我可以将我的两个报告都变成子报告并创建一个主报告来保存它们。这是最好的方法吗?还是有更好的解决方案?

+1

我认为关于master和subreport的分裂报告是一个好主意。但你应该考虑报告的表现;如果你的数据源很小,那么这并不重要。另一种方法是用条件隐藏细节带,但可能对报告的性能不利。 –

回答

1

你当然可以把它们放到同一个报告中。

您需要运行SQL查询两次†将您的总结报告作为子报表放入您的详细报告的汇总区域是最简单的解决方案。您将使用相同的SQL连接,那么子报表将运行自己的查询(恰好与主报表中的查询相同)。

替代解决方案包括:

  • 一个主要的报道几乎空它拥有两个子报表。这对复杂的报告来说可能是一个很好的解但考虑到您的要求,它会创造更多的工作而没有任何好处。

  • 在摘要带中使用表组件(或List组件)而不是子报告。我通常更喜欢这个。如果你还没有创建这两个报告,我可能会推荐这个。但是将报告重新编写为表格组件将再次成为额外的工作,而没有真正的好处。

†这不是一个基本要求。如果您决定SQL查询的运行时间非常长,而且不能进一步调整,那么通过结果集一次性完成所有操作肯定是可能的。只需要额外的聪明就可以在单次迭代中捕获所需的所有信息,然后将其显示在摘要中。这将是比其他变化更多的工作。

+0

感谢您的所有建议! – Tauren

+1

我喜欢把这个子报告作为一个临时解决方案加入汇总带的想法。但是从更长远的角度来看,我最好喜欢一种只运行一次SQL的方法,因为它是长期运行的。我不清楚如何去做。什么类型的“额外的聪明”将被用来捕获所有的信息? – Tauren

相关问题