C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: DataSetからDataGridViewへ表示


(過去ログ 17 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■6383 / inTopicNo.1)  DataSetからDataGridViewへ表示
  
□投稿者/ きてい (1回)-(2007/08/09(Thu) 10:22:58)

分類:[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に表示させる時の関連性がよくわかりません。

以上よろしくお願いいたします。

引用返信 編集キー/
■6393 / inTopicNo.2)  Re[1]: DataSetからDataGridViewへ表示
□投稿者/ 魔界の仮面弁士 (375回)-(2007/08/09(Thu) 13:34:19)
No6383 (きてい さん) に返信
> 要するに結果を2行に分けて表示させたいのです。

(案1) UNION クエリを使うなどして、昨年データと今年データを別行に振り分ける。
(案2) CellPainting イベントを使って、一つのセル内に今年/昨年の 2 つのデータを描画する。
(案3) データバインドせず、RowCount で行数を指定して DataGridView1(列,行).Value に個別設定。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -