サブレポートの作成
こちらを参考にiReport&JasperReportsでサブレポートを作成していきたいと思います。
サブレポートの設定
[ウィンドウ]⇒パレットを選択し、サブレポートをドラッグしてきます。
![SnapCrab_iReport 374_2013-3-13_15-50-1_No-00](https://kaede.jp/wp-content/uploads/2013/03/SnapCrab_iReport-374_2013-3-13_15-50-1_No-00-e1363186911642.png)
![SnapCrab_iReport 374_2013-3-13_15-50-55_No-00](https://kaede.jp/wp-content/uploads/2013/03/SnapCrab_iReport-374_2013-3-13_15-50-55_No-00-e1363186925846.png)
今回は新しいレポートを選択します。既に作成済みの場合は[既存のレポートを使用]を選択してください。
レイアウトと保存名とパス指定以外デフォルト状態で[次へ]を押下します。
![SnapCrab_サブレポートウィザード_2013-3-13_16-30-34_No-00](https://kaede.jp/wp-content/uploads/2013/03/f01440227ab1554aa8c5bae947f435ee.png)
![SnapCrab_サブレポートウィザード_2013-3-13_15-51-40_No-00](https://kaede.jp/wp-content/uploads/2013/03/bed7ab975fecacfa6b459ad4f89bae08.png)
![SnapCrab_サブレポートウィザード_2013-3-13_15-51-53_No-00](https://kaede.jp/wp-content/uploads/2013/03/014a41a305a2d8e38c9be63ea84472aa.png)
![SnapCrab_サブレポートウィザード_2013-3-13_15-53-23_No-00](https://kaede.jp/wp-content/uploads/2013/03/cdee36726cf137e2c7d01625d73d64f4.png)
![SnapCrab_サブレポートウィザード_2013-3-13_15-53-47_No-00](https://kaede.jp/wp-content/uploads/2013/03/eecfbcf11af29495159a234f17e985d7.png)
![SnapCrab_サブレポートウィザード_2013-3-13_15-54-23_No-00](https://kaede.jp/wp-content/uploads/2013/03/fe14e97b24b4e10672ea2fc23d83da96.png)
![SnapCrab_サブレポートウィザード_2013-3-13_16-4-6_No-00](https://kaede.jp/wp-content/uploads/2013/03/dfedbd8ea69a21c1697a6ba40b664274.png)
完了を押下するとサブレポートが出来上がります。
![SnapCrab_iReport 374_2013-3-13_16-42-8_No-00](https://kaede.jp/wp-content/uploads/2013/03/SnapCrab_iReport-374_2013-3-13_16-42-8_No-00-e1363186887665.png)
必要に応じてサブレポートの言語を変更します。
![SnapCrab_iReport 374_2013-3-13_16-44-9_No-00](https://kaede.jp/wp-content/uploads/2013/03/SnapCrab_iReport-374_2013-3-13_16-44-9_No-00-e1363186872919.png)
メインレポートからサブレポートにパラメータを渡したい場合、メインレポートからサブレポートのフィールドを選択し、プロパティにあるパラメータから設定することでできます。
![SnapCrab_iReport 374_2013-3-13_16-49-25_No-00](https://kaede.jp/wp-content/uploads/2013/03/SnapCrab_iReport-374_2013-3-13_16-49-25_No-00-e1363186855471.png)
![SnapCrab_iReport 374_2013-3-13_16-50-27_No-00](https://kaede.jp/wp-content/uploads/2013/03/SnapCrab_iReport-374_2013-3-13_16-50-27_No-00-e1363186839355.png)
![SnapCrab_iReport 374_2013-3-13_16-52-26_No-00](https://kaede.jp/wp-content/uploads/2013/03/SnapCrab_iReport-374_2013-3-13_16-52-26_No-00-e1363186823764.png)
メインレポートとは違った名前の指定や式を用いて変換することもできるみたいです。
データソースをメインレポート⇒サブレポートに渡す場合
今回はデータソースをCollection型データを渡すようにします。
まず、メインレポートにてJRBeanCollectionDataSourceをインポートします。
レポートを右クリック⇒プロパティ⇒インポート⇒追加の順にクリックし、下記の情報を入力します。
net.sf.jasperreports.engine.data.JRBeanCollectionDataSource
![SnapCrab_iReport 374_2013-3-13_16-56-31_No-00](https://kaede.jp/wp-content/uploads/2013/03/SnapCrab_iReport-374_2013-3-13_16-56-31_No-00-e1363186792468.png)
![SnapCrab_report1 - プロパティー_2013-3-13_17-0-44_No-00](https://kaede.jp/wp-content/uploads/2013/03/3895ed6efd2d7ecc2c37b906ff76ebf6.png)
![SnapCrab_report1 - インポート_2013-3-13_16-59-20_No-00](https://kaede.jp/wp-content/uploads/2013/03/fbe2fcba2f2b883f24bdf1293a5a4688.png)
![SnapCrab_iReport 374_2013-3-13_17-0-14_No-00](https://kaede.jp/wp-content/uploads/2013/03/SnapCrab_iReport-374_2013-3-13_17-0-14_No-00-e1363186778487.png)
次にメインレポートにてサブレポートのフィールドを選択し、Connection typeをUse a datasource expessionを選択します。
![SnapCrab_iReport 374_2013-3-13_17-5-21_No-00](https://kaede.jp/wp-content/uploads/2013/03/SnapCrab_iReport-374_2013-3-13_17-5-21_No-00-e1363186764576.png)
データソース文字列に下記文字を挿入します。
new JRBeanCollectionDataSource($F{フィールド名})
パラメータ⇒フィールド名⇒プロパティを開き、パラメータクラスに「java.util.Collection」を選択します。
![SnapCrab_iReport 374_2013-3-13_17-18-17_No-00](https://kaede.jp/wp-content/uploads/2013/03/SnapCrab_iReport-374_2013-3-13_17-18-17_No-00-e1363186736234.png)
あとはJAVA側でパラメータにコレクション型を渡せばOKです。
例)
ArrayList<ArrayList<String>> サブレポートのデータソース = new ArrayList<ArrayList<String>>();
ArrayList<String> サブレポートのフィールド = new ArrayList<String>();
サブレポートのフィールド.add("test");
サブレポートのフィールド.add("test2");
サブレポートのフィールド.add("test3");
サブレポートのデータソース.add(サブレポートのフィールド);// レポートのパラメータを作成する
HashMap parameters = new HashMap<String, String>();//データソースの作成
dataSource = new JRBeanCollectionDataSource(メインレポートのデータソース);//サブレポートのデータソースセット
parameters.put("フィールド名", サブレポートのデータソース);//出力処理
JasperPrint print = JasperFillManager.fillReport(テンプレートパス+ファイル名, parameters, メインレポートのデータソース);<br /><br />// PDFファイルへ出力する
//直接出力の場合
//JasperExportManager.exportReportToPdf(print,"pdf/output/sample_report2.pdf");
//byteにて格納する場合
byte[] bytes = JasperExportManager.exportReportToPdf(print);
これでサブレポートが出来ると思います。