正面和背面的条件打印页面

时间:2016-05-12 06:34:43

标签: jasper-reports

我正在使用iReport 5.2.0,我有2个要打印的报告。 两个报告都包含动态数据,可以是多个页面。但是,第一次报告的页数总是等于第二次报告中的页数。

在我当前的设置中,第一个报告始终完全打印,然后打印第二个报告的所有页面。

但是,我的要求是报告应按以下顺序打印:

  • 报告1的第1页。
  • 报告2的第1页。
  • 报告1的第2页。
  • 报告2的第2页。
  • 报告1的第3页。
  • 报告2的第3页。
  • ...

有什么办法可以用JasperReports实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

让我们说,报告1使用X查询X_SQL,报告2使用Y查询Y_SQL。

如果两个查询都有相同的列数,那么它很好,否则添加关于X_SQL和Y_SQL的附加列,以便将两个查询联合起来。

请记住,您必须在sql中生成一个数字系列列和一个虚拟列。您可以在sql中动态生成数字序列。

X_SQL有两个新列(number_series,'detail1'为虚拟) 联盟 Y_SQL有两个新列(number_series,'detail2'为dummy) 按number_series排序,虚拟

SQL的输出:

X_SQL列,1为number_series,'detail1'为dummy Y_SQL列,1为number_series,'detail2'为dummy X_SQL列,2为number_series,'detail1'为dummy Y_SQL列,2为number_series,'detail2'为虚拟

现在在新报告中添加两个详细信息区域。报告高度仅为一个细节带高+顶部和底部填充。

1个细节带=第一个报告设计
2个细节带=第二个报告设计

如果你的jrxml太复杂,你可以使用子报告。

现在正在打印细节带的表达时使用

详细信息1:$ F {dummy} .equals('detail1') 细节带2:$ F {dummy} .equals('detail2')

注意: 1)你需要在你的SQL查询中订购。 2)报告的高度需要选择得当。

如果你还有问题,那么我建议发布你的jrxml。