|
分類:[VB.NET/VB2005]
色々と調べたのですが、結局わからなかったので質問させていただきます。
VB.NETでWindowsアプリケーションを作成中です。SQLはSQLServerです。
DataGridViewにSQLでSelectした値と差分を表示させたいと思っております。
Selectした値は一旦DataSetに格納しています。
DataGridViewの仕上がりイメージは下記のとおりです。
コード | 名前 | 1月 | 2月 | 3月 | ・・・・・|12月
昨年度 00001 | あ | 10 | 10 | 20 | | 30
本年度 | 20 | 10 | 10 | | 50
差分 | -10 | 0 | 10 | | -20
コードと名前に対する1月〜12月までの、昨年度の数値と本年度の数値を1行ずつ分けて表示させたいです。
要するに結果を2行に分けて表示させたいのです。
データ取得元はテーブルがAからDまでの4つで、下記のようなSQL文を書きました。
Dテーブルには昨年度のデータが、Cテーブルには今年度のデータが入っています。
Aテーブルにはコードが、Bテーブルには名前が入っています。
SELECT A.CODE,B.NAME,
D.L01,D.L02,D.L03,D.L04,D.L05,D.L06,D.L07,D.L08,D.L09,D.L10,D.L11,D.L12,
C.T01,C.T02,C.T03,C.T04,C.T05,C.T06,C.T07,C.T08,C.T09,C.T10,C.T11,C.T12
FROM
((Bテーブル AS B INNER JOIN Aテーブル AS A ON B.CODE = A.CODE)
INNER JOIN Cテーブル AS C ON A.CODE = C.CODE)
INNER JOIN Dテーブル AS D ON A.CODE = D.CODE
WHERE A.CODE = '[フォーム内で選択された値]'
コードは省略していますが、下記のようにSQLを実行してDataSetにセットし、その後DataGridViewへバインドしています。
Private BindDatatable As DataTable = Nothing
Private bs As New BindingSource
BindDatatable = _database.SelectCommand(SQL.ToString)
bs.DataSource = BindDatatable
DataGridView1.DataSource = bs
↑この部分で、どうにかしてSQLで取得した本年度の値をDataGridViewの次の行にセットしたいと思っているのですが方法がわかりません。。。
上記のままだと、データは昨年度の行のみ表示されます。
またDataGridViewの3行目に昨年度と本年度の差分を表示させたいのですが、どのようにしてDataSetに計算式を入れて(もしくは値を入れて)DataGridViewに表示させればよいのでしょうか?
DataGridViewに直接計算式を入れる方法でもいいのですが、それもわかりません。
しかし他にもたくさん計算をさせるので、DataSetに入れておいたほうがいいのかなと思いました。
DataSetに値を入れたりするのはまあまあわかるのですが、DataGridViewに表示させる時の関連性がよくわかりません。
以上よろしくお願いいたします。
|