Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

5分でわかるActiveReports帳票(2013年度版)-ページレポート

ActiveReports for .NET 7.0Jで作るサンプル帳票(2)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
目次

より複雑なレイアウト:OverflowPlaceHolderの使用

 基本的な使い方は以上ですが、より複雑なレポートを作成してみましょう。ここでは、以下のことを行います。

  • OverflowPlaceHolderコントロールを使用して、表の部分を複数に分ける。
  • 同一レポート内で複数のレイアウトを使用する。

OverflowPlaceHolderコントロール

 OverflowPlaceHolderコントロールは、List、BandedList、Matrix、Tableなどのデータ領域について、FixedSizeプロパティに設定した範囲に出力するデータが収まりきらない時、その続きを表示する場所を指定するためのコントロールです。

 通常、Listなどのデータ領域に表示するデータが1ページに収まりきらない場合、そのあふれた部分のデータは、次のページに同じレイアウトで表示することになります。これは、そのデータ領域に出力すべきデータがなくなるまで繰り返されます。

 しかしながら、レポートの要求仕様によっては、データ領域にデータが収まりきらない時、ただ同じレイアウトをページごとに繰り返すのではなく、レイアウトを変えて出力したい場合もあると思われます。例えば2段組や3段組にする、最初のページとあふれたデータを出力する2ページ目以降のレイアウトを変更する、といったレイアウトが考えられます。

 ページレポートの場合、同一レポート内に複数のレイアウトを定義することが可能であり、レイアウトをまたいでデータ領域とOverflowPlaceHolderを連結させることもできますので、こうしたレイアウトを実現できます。

単一のデータ領域のみを使用した場合
単一のデータ領域のみを使用した場合

 データ領域に出力データが収まりきらなくなったら、同じレイアウトで繰り返し出力します。

複数のレイアウトを定義してOverflowPlaceHolderを使用した場合
複数のレイアウトを定義してOverflowPlaceHolderを使用した場合

 データ領域とOverflowPlaceHolderを連結させることで、データ領域からあふれた部分をページ上の任意の場所に続けて出力できます。また、一番最後のOverflowPlaceHolderまでデータが出力されても、まだ出力すべきデータが存在する場合には、そのOverflowPlaceHolderが配置されているページのレイアウトで繰り返し出力します。

 ここからは、OverflowPlaceHolderを使用する一例として、前の手順で作成した「商品一覧」のページレポートを元に、一覧部分を2段組にした上で、1ページ目とそれ以降のページでレイアウトが異なるようなレポートを作成してみます。

ページ1レイアウト

 まず、タイトルとして配置した「仕入先」と「在庫数量」のTextBoxを削除します。

 次に、List上に配置しているCompanyNameとUnitsInStockの値を出力するためのTextBoxを削除します。削除したらListの幅を縮めます(ここでは幅を7cmとします)。このときはFixedSizeプロパティの幅(Widthプロパティ)もコントロールの幅(Size.Widthプロパティ)と同じ値に設定します。

 次は、同じサイズのOverflowPlaceHolderをListの右隣に配置します。名称はデフォルトのOverflowPlaceHolder1としておきます。OverflowPlaceHolder1の上方に「商品コード」と「商品名称」のタイトルをコピーして貼り付けます。

 上記のような手順を行うことで、ページ1のレイアウトが完成します。

ページ1のレイアウト
ページ1のレイアウト

ページ2レイアウト

 次は、2ページ目以降のレイアウトを定義する手順を説明します。

 デザイナ下部の「ページ1」タブの隣にある「新規」タブをクリックします。すると「ページ2」が作成されます。これが2ページ目以降のレイアウトになります。

 「ページ2」上にOverflowPlaceHolderと「商品コード」「商品名称」のTextBoxをそれぞれ2つずつ貼り付けます。配置した2つのOverflowPlaceHolderの名前はそれぞれ、OverflowPlaceHolder2、OverflowPlaceHolder3とします。

 このようにすることで、ページ2のレイアウトが完成します。

ページ2のレイアウト
ページ2のレイアウト

 レイアウトができたら、最後に各データ領域コントロール同士を連結させます。

 ListのOverflowNameプロパティに、「OverflowPlaceHolder1」を設定します。このように設定することで、Listに収まりきらなかったデータはOverflowPlaceHolder1の部分に継続して出力されることになります。

 同様に、OverflowPlaceHolder1のOverflowNameプロパティには「OverflowPlaceHolder2」を、OverflowPlaceHolder2のOverflowNameプロパティには「OverflowPlaceHolder3」を設定します。OverflowPlaceHolder3のOverflowNameプロパティは空白のままで構いません。

 この状態でレポートを表示させると、1ページ目は「商品一覧」の見出しがあり、2ページ目以降は見出しがない2段組レポートができます。

まとめ:セクションレポートとページレポート

 ページレポートを使うと、セクションレポートでは実現しにくいレイアウトも実現できる場合があります。特にOverflowPlaceHolderコントロールを使用すると、セクションレポートでは実現しにくい自由なレイアウトを実現できます。

 ただその一方で、セクションレポートの方が得意な処理もあります。例えば、セクションレポートの場合、さまざまな「イベント」が用意されており、コードによる処理を記述するのも容易であり、柔軟性に優れた面があります(ページレポートには「イベント」という概念が存在しません)。

 レポートを作成する最初の段階で、どちらのレポート形式が適しているかを検討してみてください。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:5分でわかるActiveReports帳票

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5