SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

5分でわかるActiveReports帳票

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

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

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

より複雑なレイアウト: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コントロールを使用すると、セクションレポートでは実現しにくい自由なレイアウトを実現できます。

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

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

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
5分でわかるActiveReports帳票連載記事一覧

もっと読む

この記事の著者

グレープシティ株式会社 ActiveReportsチーム(グレープシティカブシキガイシャ アクティブレポートチーム)

 宮城県仙台市に本社を構えるグレープシティでは、日本の業務に適したシステムをより早く開発するためのソフトウェアを提供しています。エンドユーザーの利用しやすさ、幅広いユーザー環境への対応、そして何よりプログラマの作業を軽減することを一番に目指しています。 ActiveReportsは、帳票開発に必要なあらゆる機能を備えた当社を代表するコンポーネントの1つ。1998年の発売以来、日本だけでなく全世界で多数の帳票開発者に使用されています。製品開発は同チームが中心になり、「日本仕様」の厳しい要望を実現することを目指しています。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7391 2015/07/23 16:16

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング