一度DataGridに表示させたデータが次のSQL文で表示させたデータに混ざってしまいます。
例)
SqlDataAdapter1.SelectCommand.CommandText = Sql_Customer1
DataGrid1.DataMember = "customer"
SqlDataAdapter1.Fill(DataSet11, "customer")
↓
SqlDataAdapter1.SelectCommand.CommandText = Sql_Customer2
DataGrid1.DataMember = "customer"
SqlDataAdapter1.Fill(DataSet11, "customer")
上のように[Sql_Customer1]のSQLの結果が[Sql_Customer2]の結果に混ざりこみます。
どうすれば[Sql_Customer2]の結果のみが表示されるのでしょうか?
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200502/05020061.txt
VB6だったけど、過去ログで見つけたよ
まだ出来ません。
間に以下のソースを加えました。
==============
DataGrid1.DataSource = Nothing
DataGrid1.Refresh()
DataGrid1.DataSource = "DataSet11"
==============
SqlDataAdapter1.SelectCommand.CommandText = Sql_Customer1
DataGrid1.DataMember = "customer"
SqlDataAdapter1.Fill(DataSet11, "customer")
↓
DataGrid1.DataSource = Nothing
DataGrid1.Refresh()
DataGrid1.DataSource = "DataSet11"
↓
SqlDataAdapter1.SelectCommand.CommandText = Sql_Customer2
DataGrid1.DataMember = "customer"
SqlDataAdapter1.Fill(DataSet11, "customer")
相変わらず結果がマージされてしまいます。
何かいい方法ないでしょうか?
> DataGrid1.DataSource = Nothing
連結されていると DataSource の更新がうまくいかない場合があるので
解除するのはいいとして、実際のデータが入っているのは、DataSet11
でしょ?
> DataGrid1.Refresh()
再描画処理を呼ぶ?データとは何の関係もないと思う。
DataSet11 の"customer"テーブルを削除する必要があるのでは?
回答ありがとうございます。
以下の方法にしたらマージはされなくなりました。
SqlDataAdapter1.SelectCommand.CommandText = Sql_Customer1
DataGrid1.DataMember = "customer"
SqlDataAdapter1.Fill(DataSet11, "customer")
↓
Dataset11.clear
↓
SqlDataAdapter1.SelectCommand.CommandText = Sql_Customer2
DataGrid1.DataMember = "customer"
SqlDataAdapter1.Fill(DataSet11, "customer")
しかし[Sql_Customer1]でselect a form customerとし
[Sql_Customer2]でselect b form customerとすると
結果表示される項目がaとbになってしまいます。(Sql_Customer2でaの項目が表示されたままになる。)何かよい方法は無いでしょうか?
意味が分からん。
同じテーブル内に a , b を表示?
"SELECT a , b FROM customer"では?
1つのテーブルに a の結果を、別のテーブルに b の結果を表示?
なら、DataSet の中に DataTable を2つ用意しないといけないのでは?
あるときはDataGrid1の中にCustomerのaの項目のみを表示
又あるときは同じDataGrid1の中にCustomerのbの項目のみを表示という
処理は無理でしょうか?
その説明と
>しかし[Sql_Customer1]でselect a form customerとし
>[Sql_Customer2]でselect b form customerとすると
>結果表示される項目がaとbになってしまいます。(Sql_Customer2でaの項目が表示されたままになる。)何かよい方法は無いでしょうか?
の違いが分かりません。
1テーブルに1SQLの結果しか対応できない仕組みになっているのなら
解決です。ありがとうございました。
>1テーブルに1SQLの結果しか対応できない仕組みになっているのなら
仕組みも何も。。。
逆に1つのテーブルに2つのSQLの結果を対応させる方法を、日本語の説明だけで
いいから(プログラムで実現できなくてもいいから)説明して欲しいです。
今回は同じテーブルのデータだから似たような結果になるかもしれないけど、
違うテーブルの検索結果だったら?
対応させるルールが明確にならないとプログラムは動きません。
SQLが違う時点で結果を自動で連結するようなルールは作れないと思います。
DataSet の中に DataTable を2つ用意して表示を切り替えればいいと思います。
ツイート | ![]() |