SHOEISHA iD

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

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

5分でわかるActiveReports帳票

5分でわかるActiveReports帳票-集計処理と改ページ(2007年度版)

ActiveReports for .NET 3.0Jで作るサンプル帳票

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

重複する値を表示させないようにする

 今回のサンプル帳票レイアウトでは、注文番号と注文単位の小計値を明細の1行目に表示させ、2行目以降は何も表示していません。重複値の表示、非表示を切り替えるには、detailセクションのFormatイベントでTextBoxコントロールのVisibleプロパティを切り替えればよいのですが、以下のようにすることでコード追加が不要になります。

 重複する項目を次の行に表示させないようにするには、初回だけ表示させたい列のTextBoxコントロールをグループヘッダに設定し、UnderlayNextプロパティにTrueを設定します。UnderlayNextプロパティをTrueに設定したセクションは、次のセクションの開始位置に重なって表示されるため、結果として1行目だけ集計値が表示されることになります。

 なお、コードを追加して表示、非表示を切り替える方法はActiveReportsのコードスニペットに含まれているので、ぜひ試してみてください。

改ページ処理について

 最後に、改ページの処理について簡単に説明します。出力結果が設定した用紙サイズに収まらない場合、ActiveReportsでは自動的に改ページが行われますが、帳票レイアウト側で明示的に改ページ位置を指定することもできます。

 改ページを指定するにはPageBreakコントロールを使用する方法と、各レポートセクションのNewPageプロパティを設定する方法の2つがあります。

PageBreakコントロールを使った改ページ

 PageBreakコントロールはMicrosoft Wordの[改ページの挿入]とほぼ同様の機能です。コントロールを配置した位置で、毎回改ページを行います。

PageBreakコントロール
PageBreakコントロール

 PageBreakコントロールはセクション途中の改ページに使用するコントロールです。例えば、ページヘッダに印刷する画像サイズが大きいので、2ページに分けたい場合などに使用します。

 ただ、最終ページであっても指定位置で改ページしてしまうため「セクションが終了したところで改ページする」といったケースにはあまり向いていません。

 セクション単位で改ページを行うには後述するNewPageプロパティを使用するのが便利ですが、PageBreakコントロールを使う場合はFetchDataイベントにコードを追加してEnabledプロパティを制御するなどの方法があります。以下のコードでは、最終行だった場合(eArgs.EOFプロパティの値がTrue)、改ページを起こさないように制御しています。

PageBreakコントロールの改ページ制御(C#)
 private void NewActiveReport1_FetchData(object sender,
        DataDynamics.ActiveReports.ActiveReport.FetchEventArgs eArgs)
{
    if (!eArgs.EOF)
    {
        this.pageBreak1.Enabled = true;
    }
    else
    {
        this.pageBreak1.Enabled = false;
    }
}
PageBreakコントロールの改ページ制御(Visual Basic 2005)
Private Sub NewActiveReport1_FetchData(ByVal sender As System.Object, _
        ByVal eArgs As DataDynamics.ActiveReports.ActiveReport3.FetchEventArgs) _
        Handles MyBase.FetchData
    If Not eArgs.EOF Then
        PageBreak1.Enabled = True
    Else
        PageBreak1.Enabled = False
    End If
End Sub

集計グループ単位での改ページ

 グループヘッダ・グループフッタのNewPageプロパティを設定すると、集計グループの単位で改ページが行われます。NewPageプロパティにはNone、Before、After、BeforeAfterのいずれかを設定できます。

 例えば、グループフッタのNewPageプロパティを「After」に設定すると、グループフッタが印刷されたあとで改ページしますが、PageBreakコントロールのように最後に空白ページが入ることはありません。

まとめ

 ActiveReportsの集計機能はデータソースの変更をすることなく、Summaryプロパティを設定するだけで高度な集計処理を簡単に行うことができます。また、必要に応じてコードを追加することで、より柔軟なカスタマイズが可能となっています。

 改ページ制御については簡単な機能紹介にとどまりましたが、次回は、より掘り下げたページ制御のノウハウや実際の帳票印刷などのテーマを取り上げる予定です。

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

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

もっと読む

この記事の著者

宮本奈紗(ミヤモトナサ)

株式会社システムインテグレータ ERPソリューション部所属。ERPシステムの設計・開発に従事。業務でActiveReportsを使用。

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

渡辺俊史(ワタナベトシフミ)

株式会社システムインテグレータ パッケージ開発部所属。ECサイト構築パッケージの設計・開発に従事。VSUG(Visual Studio User Group) データベース・データアクセスフォーラムリーダー。blog...

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1664 2014/02/06 11:25

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング