JasperReports: is it possible to use multiple data

2019-01-14 12:38发布

问题:

It seems that the reporting idiom is that a report consist of a single list of items, with some additional data (parameters). Are there ways to include several unrelated lists in a report, or would this go against the idiom to such an extent that a different tool should rather be used to generate the output?

Suppose, for instance, you have a list of Persons that lives in a Building, with names, phone numbers and so on. This list would be the main datasource. Additionally, on the same report you want to show various other information about that Building, such as address, number of floors and so on. The number of items in this information might vary between Buildings, so that you cannot simply put it into static parameters, but would need a map or a list. This is of course a contrieved example, but should serve to illustrate the problem.

In short: can you use several unrelated lists in a report?

回答1:

I think what you want is a Subreport within your report.

A Subreport can have a different datasource than the main report.

Here is a tutorial on how to create one.



回答2:

Yes,

  • To execute multiple queries on single database connection see

    Multiple queries in a single jasper document

  • To generate new JRDatasource for subreport or component using subDataset from a List<MyBean> parameter or field the syntax is similar to:

    <parameter name="param1" class="java.util.List"/>
    
    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{param1})]]></dataSourceExpression>
    

    For example see How to design report with tabular format?

  • With xml and json datasource subDataSource can be used

    json: How to create multiple tables in jasper report using json as a datasource?

    xml: Jasper list element inside table element with XML datasource