3つの個別のレポートを入力してコンパイルし、JRPdfExporterParameter.JASPER_PRINT_LISTパラメーターを使用して、次のようなコードを使用して単一のレポートを作成できます。
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();
詳細については、 JRバージョン-2.0.4のこのサンプルを参照してください。
- 2番目の方法。いくつかのデータセットとリストコンポーネントを使用する
iReport4.xバージョンの複数のデータセットを単一のレポートに追加できます。すべてのデータセットには、独自のクエリが含まれている場合があります。リストコンポーネントは、独自のデータセットを使用できます。
このサンプル(iReport 4.5.1でビルド)では、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>
レポートのデザインは次のとおりです。
結果は( iReportプレビュー経由で)次のようになります。