【パブリッシャー】ページデザイナーで親子構成のページをデザインしてみる

今回は入れ子になったPDF形式のレポートを作成してみます。
親となるレポートがあり、1ページに1顧客情報を表示。ページ内の一部にその顧客に関連する他の情報を表示するといったような形式になります。ページ内の一部に表示される関連情報は、子レポートにより作成されます。ここでのポイントは、親から子にキーとなる値が渡されるということになります。
PDF形式のレポートの作成には、パブリッシャーのページデザイナー機能を使用します。
### 子レポートの作成 ###
##### クエリ #####
子レポートのクエリは、親レポートからもらった**顧客コード**をフィルターとし、その関連するレコードを返すようにデザインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/a6840419-7d2b-30f3-d56e-2be898258470.png)
**顧客コード**`C221017-122521`が渡された場合のクエリ結果。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/f3754c0f-aa69-4062-efb1-66e6458bec92.png)
##### ページのデザイン #####
子レポートは、親レポートの一部として表示されるので必要最小限のサイズにし、**テーブル**コントロールを配置します。
ヘッダー行の列タイトルを記入し太字とします。データ行にはクエリ結果フィールドをそれぞれ割り当てます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/af8df68a-c570-6348-c121-e9655de92e3e.png)
`Data Sources`プロパティのデータセット**Q001**の右クリックメニューから`Edit`を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/64c6ad93-debe-6be4-b477-64a718878eb2.png)
`DataSet`ダイアログのParametersオプションを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/b2b026f9-666b-593a-77d1-307aa50739a9.png)
以上で子レポートの作成は完了。次に親レポートを作成します。
### 親レポートの作成 ###
##### クエリ #####
親レポートのクエリでは、顧客コード、顧客名、住所の一覧を返すようにデザインします。この**顧客コード**の値が子レポートにフィルターとして渡されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/ce120435-3e5f-4d47-077c-f3ed77487704.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/ace05123-6200-330b-1b49-f37a99d63438.png)
##### ページのデザイン #####
レポートのサイズをA4に収まるよう調整してからテーブルコントロールをドラッグ＆ドロップで配置します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/a520ec30-f83d-0341-8be7-097a55984f08.png)
テーブル1セル／1ページというデザインで作成するので余分な列は削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/6a56e4b2-4b32-d95b-5fa6-b6100e1284a8.png)
ヘッダー行は不要なので削除します。またフッター行は高さを最小にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/576200f0-a014-b556-8f73-181556b33ee9.png)
レポートの幅（A4サイズ）に入る大きさにテーブルを広げます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/d4fe9193-88e1-ff25-71b0-2cc1199f2db7.png)
フッター行の高さは小さいままで、通常行の高さをレポート1ページに収まる高さ一杯まで大きくします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/1f074eb1-9f56-7ff0-2090-797ea6a740e0.png)
**Container**コントロールを通常行にドラッグ＆ドロップします。この**Container**コントール内にTextBox等のいくつかのコントロールを配置していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/cb6c725d-ed00-1fad-6392-e44dc11def8a.png)
**TextBox**を6つ配置して左列の**TextBox**でラベルを作成します。**TextBox**の`Value`プロパティに**顧客コード**、**顧客名**、**住所**と記入します。`Font`プロパティではWeightを**Bold**にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/2f6b2668-2cb9-8d8c-fcd8-6e0ec05d8807.png)
右列の**TextBox**にはクエリで返されるそれぞれの値を指定します。クエリの出力名で指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/a733c981-71c9-0e86-f237-bca1a71e9040.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/2e178350-35e7-aa74-6ef1-9fe7ba83bc05.png)
今度は子レポートを表示するためのコントロール**Subreport**をこのように配置します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/6e601759-92ca-b536-2a9f-2cc49b1754cd.png)
**Subreport**コントロールの`ReportName`プロパティで、先ほど準備した子レポートを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/5e81c641-86c9-8e4d-b1d9-73da9547bce5.png)
更に**Parameters**プロパティで、親レポートから子レポートへの値の受け渡しを定義します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/37ad5aae-59af-c1e5-70d3-651b6abd3a73.png)
最後に`オプション`タブの既定の出力形式を**Page PDF**に設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/66685d85-3514-72ba-31de-60243c2727d9.png)
以上で親レポートの作成は完了。
### 検証 ###
Sharperlightサービスを起動してレポートをブラウザでチェックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/9ad2a411-5c79-3634-9efe-f5c792c1cbdd.png)
ページを切り替えるとまた別の顧客情報が表示され、それに伴って子レポートの内容も切り替わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/3a044ead-6719-711e-7b82-3b7692ae9c99.png)
このような形式にあった帳票等の出力に役立ちますね。

では、失礼します。