You can fill out and compile three separate reports, and then use the JRPdfExporterParameter.JASPER_PRINT_LIST parameter to create a single report using the following code:
JasperReport ordersReport = JasperCompileManager.compileReport(srcOrdersReport); JasperPrint jpOrdersReport = JasperFillManager.fillReport(ordersReport, ordersParamsMap, ordersDataSource); JasperReport receiptsReport = JasperCompileManager.compileReport(srcReceiptsReport); JasperPrint jpReceiptsReport = JasperFillManager.fillReport(receiptsReport, receiptsParamsMap, receiptsDataSource); JasperReport invoicesReport = JasperCompileManager.compileReport(srcInvoicesReport); JasperPrint jpInvoicesReport = JasperFillManager.fillReport(invoicesReport, invoicesParamsMap, invoicesDataSource); List<JasperPrint> printList = new ArrayList<JasperPrint>(); printList.add(jpOrdersReport); printList.add(receiptsReport); printList.add(invoicesReport); JRExporter exporter = new JRPdfExporter(); exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, printList); exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, output); exporter.exportReport();
You can see this sample for your JR version 2.0.4 for more details.
- The second way. Using multiple datasets and list components
You can add multiple datasets to iReport 4.x in one report. Each data set may contain its own query. The list component can use its own dataset.
In this example (build with iReport 4.5.1), I placed a list in the header group 3:
<?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="several_queries" language="groovy" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> <subDataset name="OrdersDataset"> <queryString> <![CDATA[SELECT TOP 5 ORDERID AS orderId, SHIPNAME AS orderShipName, SHIPCOUNTRY AS orderShipCounty, SHIPCITY AS orderShipCity FROM orders]]> </queryString> <field name="ORDERID" class="java.lang.Integer"/> <field name="ORDERSHIPNAME" class="java.lang.String"/> <field name="ORDERSHIPCOUNTY" class="java.lang.String"/> <field name="ORDERSHIPCITY" class="java.lang.String"/> </subDataset> <subDataset name="ReceiptsDataset"> <queryString> <![CDATA[SELECT TOP 10 ID AS receiptId, CITY AS receiptCity FROM receipts]]> </queryString> <field name="RECEIPTID" class="java.lang.Integer"/> <field name="RECEIPTCITY" class="java.lang.String"/> </subDataset> <subDataset name="InvoicesDataset"> <queryString> <![CDATA[SELECT TOP 7 ID AS invoiceId, TOTAL AS invoiceSum FROM invoices]]> </queryString> <field name="INVOICEID" class="java.lang.Integer"/> <field name="INVOICESUM" class="java.math.BigDecimal"/> </subDataset> <subDataset name="dataset1"/> <queryString> <![CDATA[SELECT 1 as t FROM dual WHERE 1=2]]> </queryString> <field name="t" class="java.lang.String"/> <background> <band splitType="Stretch"/> </background> <title> <band height="243" splitType="Stretch"> <componentElement> <reportElement positionType="Float" x="0" y="44" width="555" height="19"/> <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical"> <datasetRun subDataset="OrdersDataset"> <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> </datasetRun> <jr:listContents height="19" width="555"> <textField> <reportElement x="0" y="0" width="100" height="19"/> <box leftPadding="10" rightPadding="10"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement/> <textFieldExpression><![CDATA[$F{ORDERID}]]></textFieldExpression> </textField> <textField> <reportElement x="100" y="0" width="100" height="19"/> <box leftPadding="10" rightPadding="10"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement/> <textFieldExpression><![CDATA[$F{ORDERSHIPNAME}]]></textFieldExpression> </textField> <textField> <reportElement x="200" y="0" width="100" height="19"/> <box leftPadding="10" rightPadding="10"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement/> <textFieldExpression><![CDATA[$F{ORDERSHIPCOUNTY}]]></textFieldExpression> </textField> <textField> <reportElement x="300" y="0" width="100" height="19"/> <box leftPadding="10" rightPadding="10"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement/> <textFieldExpression><![CDATA[$F{ORDERSHIPCITY}]]></textFieldExpression> </textField> </jr:listContents> </jr:list> </componentElement> <componentElement> <reportElement positionType="Float" x="0" y="130" width="400" height="18"/> <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical"> <datasetRun subDataset="ReceiptsDataset"> <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> </datasetRun> <jr:listContents height="18" width="400"> <textField> <reportElement positionType="Float" x="100" y="0" width="100" height="18"/> <box leftPadding="10" rightPadding="10"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement/> <textFieldExpression><![CDATA[$F{RECEIPTCITY}]]></textFieldExpression> </textField> <textField> <reportElement positionType="Float" x="0" y="0" width="100" height="18"/> <box leftPadding="10" rightPadding="10"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement/> <textFieldExpression><![CDATA[$F{RECEIPTID}]]></textFieldExpression> </textField> </jr:listContents> </jr:list> </componentElement> <staticText> <reportElement positionType="Float" x="0" y="4" width="400" height="20"/> <box topPadding="1" leftPadding="1" rightPadding="1"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement textAlignment="Center"> <font isBold="true" isItalic="true"/> </textElement> <text><![CDATA[Orders]]></text> </staticText> <staticText> <reportElement x="0" y="24" width="100" height="20"/> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement textAlignment="Center"> <font isItalic="true"/> </textElement> <text><![CDATA[ID]]></text> </staticText> <staticText> <reportElement x="100" y="24" width="100" height="20"/> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement textAlignment="Center"> <font isItalic="true"/> </textElement> <text><![CDATA[Customer name]]></text> </staticText> <staticText> <reportElement x="200" y="24" width="100" height="20"/> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement textAlignment="Center"> <font isItalic="true"/> </textElement> <text><![CDATA[Customer country]]></text> </staticText> <staticText> <reportElement x="300" y="24" width="100" height="20"/> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement textAlignment="Center"> <font isItalic="true"/> </textElement> <text><![CDATA[Customer city]]></text> </staticText> <staticText> <reportElement positionType="Float" x="0" y="109" width="100" height="20"/> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement textAlignment="Center"> <font isItalic="true"/> </textElement> <text><![CDATA[ID]]></text> </staticText> <staticText> <reportElement positionType="Float" x="100" y="109" width="100" height="20"/> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement textAlignment="Center"> <font isItalic="true"/> </textElement> <text><![CDATA[City]]></text> </staticText> <staticText> <reportElement positionType="Float" x="0" y="89" width="200" height="20"/> <box topPadding="1" leftPadding="1" rightPadding="1"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement textAlignment="Center"> <font isBold="true" isItalic="true"/> </textElement> <text><![CDATA[Receipts]]></text> </staticText> <componentElement> <reportElement positionType="Float" x="0" y="201" width="400" height="18"/> <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> <datasetRun subDataset="InvoicesDataset"> <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> </datasetRun> <jr:listContents height="18" width="400"> <textField pattern="###0.00;-###0.00"> <reportElement positionType="Float" x="100" y="0" width="100" height="18"/> <box leftPadding="10" rightPadding="10"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement/> <textFieldExpression><![CDATA[$F{INVOICESUM}]]></textFieldExpression> </textField> <textField> <reportElement positionType="Float" x="0" y="0" width="100" height="18"/> <box leftPadding="10" rightPadding="10"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement/> <textFieldExpression><![CDATA[$F{INVOICEID}]]></textFieldExpression> </textField> </jr:listContents> </jr:list> </componentElement> <staticText> <reportElement positionType="Float" x="0" y="161" width="200" height="20"/> <box topPadding="1" leftPadding="1" rightPadding="1"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement textAlignment="Center"> <font isBold="true" isItalic="true"/> </textElement> <text><![CDATA[Invoices]]></text> </staticText> <staticText> <reportElement positionType="Float" x="100" y="181" width="100" height="20"/> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement textAlignment="Center"> <font isItalic="true"/> </textElement> <text><![CDATA[Sum]]></text> </staticText> <staticText> <reportElement positionType="Float" x="0" y="181" width="100" height="20"/> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <topPen lineWidth="1.0"/> <leftPen lineWidth="1.0"/> <bottomPen lineWidth="1.0"/> <rightPen lineWidth="1.0"/> </box> <textElement textAlignment="Center"> <font isItalic="true"/> </textElement> <text><![CDATA[ID]]></text> </staticText> </band> </title> </jasperReport>
Report Design:
The result will be (via iReport preview):
source share