JasperReportsを利用したPDF出力 (2) 一覧表示
最終更新日: 2020年3月14日
R8 | R9
本ドキュメントは「JasperReportsを利用したPDF出力 (1) 詳細表示」の知識を前提に、一覧表示データの扱いで異なる点を説明します。
JasperReports の使い方や帳票の設計方法は Wagby サポートの対象外となります。JasperReports技術者を有しているWagby販売代理店へご相談ください。いくつかの代理店で、トレーニングなどの講習会を実施しています。
以降の説明では、一覧帳票用テストデータを "c:\customer_showlist.xml" として保存したとします。
一覧表示ではデータ1件毎にitem要素が用意されます。表示データが10件あれば10個のitem要素が存在します。
詳細表示設定と異なる点を説明します。
データソース「XML document」を用意します。例では名前を「showListCustomer」とし、customer_showlist.xmlと紐づけます。
詳細表示設定と異なるのは、Select Expression 欄に /root/customer_lp/item まで記述することです。
図1で Select Expression を指定済みのため、各フィールドの Description は、その後の部分だけを指定するだけで良いです。
すべての設定はSourceタブで確認できます。一覧帳票のサンプルを示します。
一覧帳票では基準となるXPath(/root/customer_lp/item)を既に指定しているので「Description」は項目名のみとなります。
JasperReportsにはJDBCによるデータベース接続機能があります。SQLを用いることで、Wagbyが生成したテーブルを直接操作してデータを収集し、レポートを出力させることもできます。
Japsersoft Studio での JDBC の設定は割愛します。設定ファイル jrxml の queryString 要素には次のようにSQLを指定することができます。
テーブル名や項目名はダブルクォートで囲みます。$P{ ... } という表記でパラメータを指定することもできます。
"モデル名_cp" は、検索条件が格納されたモデルを指します。
"帳票 > JasperReportsを利用したPDF出力 (1) 詳細表示 > 利用するライブラリのバージョン"をお読みください。
設定ファイル jrxml の queryString の記述に誤りがあります。スペルミスや、正しいモデル名かどうかを確認ください。
例: 次の設定は customer モデルを対象にした一覧帳票ですが、root の次の表記に誤りがあります。
正しくは次のとおりです。
はじめに
重要
準備するもの
XML形式のサンプルデータ
<%@ page pageEncoding="UTF-8" %>
<fmt:setBundle basename="jfcapp"/>
<c:out value="${customer_lp}"/>
<c:out value="${customer_cp}"/>
<?xml version="1.0" encoding="utf-8"?>
<root>
</root>
<?xml version="1.0" encoding="utf-8"?>
<root>
<customer_lp sortable="customerid " sort="" order=""><!-- 一覧表示用のデータ -->
<item>
<customerid>1000</customerid>
<name>琉球太郎</name>
</item>
<item>
<customerid>1001</customerid>
<name>琉球次郎</name>
</item>
</customer_lp>
<customer_cp><!-- 検索条件として入力した値 -->
<customerid1jshparam errorcode=""></customerid1jshparam>
<customerid2jshparam errorcode=""></customerid2jshparam>
<name errorcode=""></name>
</customer_cp>
</root>
Jaspersoft Studioを使ったレイアウト設計
Data Adapter Wizard
Dataset and Query
Source
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version last-->
<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="showListCustomer1" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="b7ae9a9e-9321-4dc5-9b76-e4fa9877d839">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="showListCustomer"/>
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
<queryString language="xPath">
<![CDATA[/root/customer_lp/item]]>
</queryString>
<field name="Field_1" class="java.lang.String">
<fieldDescription><![CDATA[name]]></fieldDescription>
</field>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch"/>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch"/>
</columnHeader>
<detail>
<band height="125" splitType="Stretch">
<textField>
<reportElement x="180" y="30" width="100" height="20" uuid="84eea6ac-1884-4e4c-87b5-45f1064327d9"/>
<textElement>
<font pdfFontName="HeiseiKakuGo-W5" pdfEncoding="UniJIS-UCS2-H"/>
</textElement>
<textFieldExpression><![CDATA[$F{Field_1}]]></textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band height="45" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
</jasperReport>
XPath指定の詳細
項目の型
表記
説明
指定例
文字列,数値,日付
項目名
項目の値が転記されます。
customer_name
モデル参照 (チェックボックスを除く)
項目名/@content
内容部が転記されます。
companyname/@content
項目名/@id
モデルのID部が転記されます。
companyname/@id
モデル参照 (チェックボックス)
項目名[添字]/@content
添字に対応したモデルの内容部が転記されます。添字は「1」から開始されます。
customertype[2]/@content
項目名[添字]/@id
添字に対応したモデルのID部が転記されます。添字は「1」から開始されます。
customertype[2]/@id
繰り返し項目
項目名[添字]
添字に対応した繰り返し項目の値が転記されます。添字は「1」から開始されます。
email[2]/@content
繰り返しコンテナ内の項目
コンテナの項目名[添字]/項目名
添字に対応した繰り返しコンテナ内の項目の値が転記されます。添字は「1」から開始されます。
report[2]/rdate
JDBCによるデータベース接続
<parameter name="juser_cp.userid" isForPrompting="true" class="java.lang.String">
<defaultValueExpression ><![CDATA["admin"]]></defaultValueExpression>
</parameter>
<queryString><![CDATA[select * from "juser" where "userid" = $P{juser_cp.userid}]]></queryString>
利用するライブラリのバージョン
トラブルシューティング
空の帳票が出力される
<queryString language="xPath">
<![CDATA[/root/customer/item]]>
</queryString>
<queryString language="xPath">
<![CDATA[/root/customer_lp/item]]>
</queryString>