我正在使用iReport 5.2.0,我有2个要打印的报告。 两个报告都包含动态数据,可以是多个页面。但是,第一次报告的页数总是等于第二次报告中的页数。
在我当前的设置中,第一个报告始终完全打印,然后打印第二个报告的所有页面。
但是,我的要求是报告应按以下顺序打印:
有什么办法可以用JasperReports实现这个目标吗?
答案 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。