Java 仅当jrxml使用的sql中包含数据时才打印jrxml报告
只有当jrxml使用的sql中包含一些数据时,我才需要通过Java打印报告。为了做到这一点,我需要点击数据库两次,第一次检查sql是否有任何记录,第二次打印报告。这样做,花费的时间是平常的两倍。有什么方法可以让我检查它是否有数据并第一次自己打印吗?使用JRDataSource sql查询返回的数据可以存储在集合中,并根据向量的大小来决定。以下只是实现这一想法的一种方法:-Java 仅当jrxml使用的sql中包含数据时才打印jrxml报告,java,jasper-reports,Java,Jasper Reports,只有当jrxml使用的sql中包含一些数据时,我才需要通过Java打印报告。为了做到这一点,我需要点击数据库两次,第一次检查sql是否有任何记录,第二次打印报告。这样做,花费的时间是平常的两倍。有什么方法可以让我检查它是否有数据并第一次自己打印吗?使用JRDataSource sql查询返回的数据可以存储在集合中,并根据向量的大小来决定。以下只是实现这一想法的一种方法:- java.util.Vector vector = new java.util.Vector(); vector = get
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数据源。有关在iReport中进一步添加说明,请单击
你也可以抽出一些时间来完成 您可以使用JasperPrint类的getPages()属性的size方法:
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
int noPages = jasperPrint.getPages().size();
if(noPages > 0)
{
JasperExportManager.exportReportToPdfFile(jasperPrint, path + "{name_of_file}.pdf");
}
else
{
//Do something else...
}
是的,例如,您可以使用。您可以收集数据,然后选择正确的方式继续应用程序