以下のコードに登場する『dtSetTable』は、既に宣言されているDataTable。
// 総合計行追加DataRow dtTotalRow = dtSetTable.NewRow();
dtTotalRow[0] = "総合計"; // 名称
int k = 0;
foreach (DataColumn col in dtSetTable.Columns) // 列数分、
{
if (k != 0)
{
dtTotalRow[k] = dtSetTable.Compute("Sum(" + col.ColumnName + ")", null); // 集計。条件はなし
}
k++;
}
dtSetTable.Rows.Add(dtTotalRow); // テーブルに総合計行を追加
DataTable.Computeメソッドについて:
細かい事(型の種類とか、条件の設定とか)はMSDNに記載されているので記載しない。
自分が使ったとこだけメモ。
DataTable.Compute("Sum(ColumnName)", filter)
↑これで、対象データをSumしてくれる。
「filter」は「式で評価される行を制限するフィルタ」と、MSDNに書いてある。
「filter」を指定しない場合は、「null」で動いた。(vb2005なら「Nothing」)。
Sum()以外でも、Count()などのよく利用されるものは用意されている模様。
ちなみに、文字列で指定しないといけない。(""で括る。)
「filter」も、利用するときは文字列にしないといけない。
そして、この集計関数を利用する場合は、DataColumn の型指定が正しくないとダメ。
(intとか。stringぢゃ計算しちくりんばい)
アタシも何度怒られたことか・・・VS2005に。
0 件のコメント:
コメントを投稿