SHOEISHA iD

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

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

ComponentZine(ComponentOne)

データベースのデータを小計つきで表示する.NETアプリケーションを作る

「PowerTools ComponentOne Studio 2012J」のC1FlexGridコントロールを使った.NETアプリケーションの作成

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

小計とアウトラインツリーの実行処理

 データベースを読み込んだら、小計を実行する処理を作成します。

 小計は全部で3種類の計算ができるようにしますので、独自のプロシージャ(メソッド)を作成し、引数にAggregateEnum列挙体のメンバを指定して計算の種類を切り替えるようにします。

小計計算の種類を切り替える処理

 最初に、小計計算の種類を切り替える処理を作成します。これは、独自のプロシージャ(メソッド)「run_subtotal」を作成し、呼び出す際に引数にAggregateEnum列挙体のメンバを指定して、3種類の計算ができるようにします。

 (1)小計とツリー用の列を作成します。1つは固定列で、もう一つはツリーを展開表示したときの追加の列です。これらは、あらかじめ列を用意しておくだけで、あとはC1FlexGridコントロールが自動的の操作してくれます。

 (2)ツリーの展開/折りたたみ記号とツリー線を表示するように設定します。

 (3)Subtotalメソッドを使用して、3つの小計を作成します。集計するデータは列「収穫量」で、1つは収穫量すべての「総計」を算出します。総計を出す場合、Subtotalメソッドの引数「level」と「groupOn」には、値「-1」を指定します。引数「level」はアウトラインツリーのレベルで「-1」を指定すると、階層レベルとは関係なく最上位に小計を作成します。

 引数「groupOn」はグループ化する列番号を指定しますが、これも「-1」を指定すると全データをグループ化し小計を計算するようになります。

 引数「totalOn」は、集計するデータのある列番号を指定し、「caption」は行見出しを指定する文字列です。

 (4)次に、階層のトップレベルに当たる「地方名」の小計を作成します。階層レベルは「0」で、グループ化する列は「地方名」の列番号「0」、集計列は「3」のままで、行見出しにはグループ化する列名に「計」という文字を結合して作成しますので、「"{0}計"」を指定します。

 2番目の階層となる「都道府県」で小計を作成します。階層レベルは「1」を指定し、グループ化する列は「都道府県名」の列番号「1」、集計列は「3」のままで、行見出しにはグループ化する列名に「計」という文字を結合して作成しますので、「"{0}計"」を指定します。

 (5)そして、最初のレベルだけツリーを展開するようにShowメソッドを実行します。

小計作成前のグリッドの状態。列「地方名」と「都道府県」でグループ化し小計を算出する
小計作成前のグリッドの状態。列「地方名」と「都道府県」でグループ化し小計を算出する
Visual Basic
Private Sub run_subtotal(ByVal agree_enum As AggregateEnum)
    '(1)小計とツリー用の列の作成
    C1FlexGrid1.Cols.Fixed = 0
    C1FlexGrid1.Tree.Column = 0

    '(2)すべての行(ノードとデータ)の横にツリーの線を表示し
    'ノード行に展開/折りたたみ記号を表示
    C1FlexGrid1.Tree.Style = TreeStyleFlags.SimpleLeaf

    '(3)総計の作成
     C1FlexGrid1.Subtotal(agree_enum, level:=-1, groupOn:=-1, totalOn:=3, caption:="総計")

    '(4)地方名で小計を作成
    C1FlexGrid1.Subtotal(agree_enum, level:=0, groupOn:=0, totalOn:=3, caption:="{0}計")

    '都道府県名で小計を作成
    C1FlexGrid1.Subtotal(agree_enum, level:=1, groupOn:=1, totalOn:=3, caption:="{0}計")

    '(5)最初のツリーレベルだけを展開
    C1FlexGrid1.Tree.Show(1)
End Sub
C#
private void run_subtotal(AggregateEnum agree_enum)
{
    //(1)小計とツリー用の列の作成
    c1FlexGrid1.Cols.Fixed = 0;
    c1FlexGrid1.Tree.Column = 0;

    //(2)すべての行(ノードとデータ)の横にツリーの線を表示し
    //ノード行に展開/折りたたみ記号を表示
    c1FlexGrid1.Tree.Style = TreeStyleFlags.SimpleLeaf;

    //(3)総計の作成
    //c1FlexGrid1.Subtotal(agree_enum, -1, -1, 3, "総計")
    c1FlexGrid1.Subtotal(agree_enum, level:-1, groupOn:-1, totalOn:3, caption:"総計");

    //(4)地方名で小計を作成
    c1FlexGrid1.Subtotal(agree_enum, level:0, groupOn:0, totalOn:3, caption:"{0}計");

    //都道府県名で小計を作成
    c1FlexGrid1.Subtotal(agree_enum, level:1, groupOn:1, totalOn:3, caption:"{0}計");

    //(5)最初のツリーレベルだけを展開
    c1FlexGrid1.Tree.Show(1);
}
  

次のページ
まとめ

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6864 2012/11/15 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング