DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridViewで累積和を表示する方法

環境/言語:[VB2010]
分類:[.NET]

VBを始めて6カ月程のビギナー?です。

DataGridViewを利用して、値(行)の累積和を表示させたいのですが、解決できず
この場をおかりしました。色々とサイトを検索したのですが、ヒントも見つけ出すことができず。。。。

やりたいことは以下のイメージです。(家計簿みたいなイメージ)
 列→  A  B  C  D
行 1  XXX 100 200 300
  2  YYY 200 200 700
  3  ZZZ 100 200 1000
  4  AAA 100 100 1200

データベースには、A列(文字列)、B列(数値)、C列(数値)のテーブルが存在します。D列へ、B列+C列の累積和を表示させる。

D列へは、DataColumn.Expressionで B+Cの和を表示することは出来たのですが
下の行へ行く毎に累積和を表示させたいのです。

DataColumn.Expressionでは、行のコントロールは出来ないのでしょうか?
以下のような事もやってみました。(ダメもとで)

For RowCount = 0 To DataGridView1.RowCount-1
sum = sum + (B列+C列)
DataColumn.Expression = sum
Next

結果は予想していましたが、すべての行(D列)が同じ値(上記の例だと"1200")になる。

考え方の根本が間違っているのかもしれませんが、
 どなた様か ヒント 欲を言えば 解決策(Program記述例)を ご教授いただければ幸いです。
■No29723に返信(miya38さんの記事)

> For RowCount = 0 To DataGridView1.RowCount-1
> sum = sum + (B列+C列)
> DataColumn.Expression = sum
> Next
見るだけだとするとDataColumn.Expression ではなく各行に値を設定すれば
いいです。
DataGridView上での書き換えが発生するなら書き換えられたタイミングで
毎回計算する必要があるかと思います。
ヒントありがとうございます。

今、出先からの投稿です。ピッピッと閃いたので忘れない為に記載しました。
こんな感じでしょうか?

書換えは、頻繁に行います。
書換えのイベントが発生する都度、下記のループを回し再計算。

'データを表示する
Me.DataGridView1.DataSource = dt
'-----------------------------------------------
'累積和を計算表示したい
'
' 累積和の列追加
dt.Columns.Add("D", GetType(Integer))

Dim sum As Integer

For i As Integer = 0 To 3 '実際は、DataRow分をループさせる。
'累積和の計算
sum = sum + DataGridView1(1, i).Value - DataGridView1(2, i).Value
DataGridView1(3, i).Value = sum
Next

これで、表示されれば「すっきり」ですが。。。

夜中に試してみます。
解決しました。

すっきり!!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板