仅当jrxml使用的sql中包含数据时才打印jrxml报告

时间:2014-01-03 13:18:02

标签: java jasper-reports

只有当jrxml使用的sql中包含一些数据时,才需要通过 Java 打印报告。为了做到这一点,我需要两次命中数据库,第一次检查sql是否有任何记录,第二次打印报告。通过这样做,它比平常花费两倍的时间。有什么方法可以检查它是否有数据并且第一次打印它?

2 个答案:

答案 0 :(得分:0)

使用JRDataSource

sql查询返回的数据可以存储在Collection say矢量中,并且根据矢量的大小可以做出决定。以下只是实现这一想法的方法: -

java.util.Vector vector = new java.util.Vector();
vector = getDatabaseRecords(); //function for extracting db records.

if(vector.size() !=0){  //some records 
   //create datasource bean
   JRDataSource bs = new JRBeanCollectionDataSource(vector); 
   //compile report 
   JasperReport jasperReport = JasperCompileManager.compileReport(url); 
   JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, bs); } else{ return "no records found"}         

如果您使用的是iReport,则必须添加JavaBean DataSource。要在iReport中进一步添加说明,请单击here

此外,您还可以节省一些时间来完成this stackoverflow question

答案 1 :(得分:0)

可以使用JasperPrint类的getPages()属性的size方法:

{{1}}