SHOEISHA iD

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

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

5分でわかるActiveReports帳票

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

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

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

ページ数の取得について

グループごとの総ページ数・現在ページ数の設置

 グループごとの総ページ数と現在ページ数を取得する場合のプロパティ設定について説明します。TextBoxコントロールのSummaryGroupプロパティを設定すると、グループごとにページカウントが行われます。

 グループ内の現在ページ番号を取得するときはSummaryRunningプロパティをGroupに設定します。総ページ数を取得するときは帳票全体のときと同じく、Noneに設定します。

ページ プロパティ 設定値
現在ページ SummaryGroup [集計したいグループ]
SummaryRunning Group
SummaryType PageCount
総ページ SummaryGroup [集計したいグループ]
SummaryRunning None
SummaryType PageCount

ページ数のスタートを1以外に設定したい場合

 PageCountの最終的な値は描画が終了したReport_Endイベント内で捕捉することはできますが、ページヘッダ・ページフッタのSummaryプロパティからは直接取得することはできません。また、ActiveReports帳票では現在ページ数を取得するためにPageNumberプロパティを使用しますが、このプロパティは読み取り専用なので直接変更することはできません。

 よって、ページ番号をアプリケーション側で制御する場合は、別の変数に保持しておいたページ番号を表示させる必要があります。

 ページ番号をカスタマイズするにはページ番号を保持するフィールドを追加し、ページヘッダのFormatイベントで現在のページ番号と処理を追加します。

PageNumberプロパティの値を利用して現在ページ番号を設定する(C#)
private int anotherPageCount = 0;
protected const int AddNumber = 4; //ページ数を5から開始する場合

//Formatイベント
private void pageHeader_Format(object sender, EventArgs e)
{
    //現在ページ数を計算
    anotherPageCount = PageNumber + AddNumber;
    //TextBoxに代入
    this.currentPage.Text = anotherPageCount.ToString();
}
ageNumberプロパティの値を利用して現在ページ番号を設定する(Visual Basic 2005)
Dim anotherPageCount = 0
Protected Const addNumber = 4 'ページ数を5から開始する

Private Sub PageHeader_Format(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) _
                                     Handles PageHeader.Format
    '現在ページ数を計算
    anotherPageCount = Me.PageNumber + addNumber
    'TextBoxに代入
    Me.currentPage.Text = anotherPageCount.ToString()
End Sub

 カスタマイズした総ページ数を取得する場合も、PageCountプロパティは使わず現在ページ数をMAX関数で集計した値を表示させます。

 今回は、アンバウンドフィールドを追加して表示させる例を紹介します。

アンバウンドフィールドを追加する(C#)
private void NewActiveReport1_DataInitialize(object sender, 
                                             System.EventArgs e)
{
    Fields.Add("GetCount");
}
アンバウンドフィールドを追加する(Visual Basic 2005)
Private Sub NewActiveReport1_DataInitialize( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.DataInitialize
    Fields.Add("GetCount")
End Sub
ページヘッダで作った現在ページ番号をカラムにいれる(C#)
private void NewActiveReport1_FetchData(object sender, 
        DataDynamics.ActiveReports.ActiveReport3.FetchEventArgs eArgs)
{
    try
    {
        Fields["GetCount"].Value = anotherPageCount;
    }
    catch
    {
        eArgs.EOF = true;
    }
}
ページヘッダで作った現在ページ番号をカラムにいれる(Visual Basic 2005)
Private Sub NewActiveReport1_FetchData(ByVal sender As System.Object, _
        ByVal eArgs As DataDynamics.ActiveReports.ActiveReport3.FetchEventArgs) _
        Handles MyBase.FetchData
    Try
        Fields("GetCount").Value = anotherPageCount
    Catch ex As Exception
        eArgs.EOF = True
    End Try
End Sub

 総ページ数Textboxのプロパティを以下のように設定し、現在ページの最大値をとるようにします。

プロパティ 設定値
SummaryFunc Max
SummaryGroup なし
SummaryRunning None
SummaryType GrandTotal(総合計)
DataField GetCount(現在ページ数)

次のページ
重複する値を表示させないようにする

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング