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