DataGridに表示させたデータをクリアするには?

解決


でみ  2007-08-30 22:57:37  No: 143860

一度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]の結果のみが表示されるのでしょうか?


NANAC  2007-08-30 23:23:54  No: 143861

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200502/05020061.txt

VB6だったけど、過去ログで見つけたよ


でみ  2007-08-31 05:44:37  No: 143862

まだ出来ません。 
間に以下のソースを加えました。
        ==============
        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")
相変わらず結果がマージされてしまいます。
何かいい方法ないでしょうか?


特攻隊長まるるう  2007-08-31 17:14:25  No: 143863

>    DataGrid1.DataSource = Nothing
連結されていると DataSource の更新がうまくいかない場合があるので
解除するのはいいとして、実際のデータが入っているのは、DataSet11
でしょ?
>    DataGrid1.Refresh()
再描画処理を呼ぶ?データとは何の関係もないと思う。
DataSet11 の"customer"テーブルを削除する必要があるのでは?


でみ  2007-08-31 18:07:57  No: 143864

回答ありがとうございます。
以下の方法にしたらマージはされなくなりました。

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の項目が表示されたままになる。)何かよい方法は無いでしょうか?


特攻隊長まるるう  2007-08-31 18:50:55  No: 143865

意味が分からん。
同じテーブル内に a , b を表示?
"SELECT a , b FROM customer"では?

1つのテーブルに a の結果を、別のテーブルに b の結果を表示?
なら、DataSet の中に DataTable を2つ用意しないといけないのでは?


でみ  2007-08-31 19:38:21  No: 143866

あるときはDataGrid1の中にCustomerのaの項目のみを表示
又あるときは同じDataGrid1の中にCustomerのbの項目のみを表示という
処理は無理でしょうか?


特攻隊長まるるう  2007-08-31 19:57:38  No: 143867

その説明と
>しかし[Sql_Customer1]でselect a form customerとし
>[Sql_Customer2]でselect b form customerとすると
>結果表示される項目がaとbになってしまいます。(Sql_Customer2でaの項目が表示されたままになる。)何かよい方法は無いでしょうか?
の違いが分かりません。


でみ  2007-08-31 21:32:44  No: 143868

1テーブルに1SQLの結果しか対応できない仕組みになっているのなら
解決です。ありがとうございました。


特攻隊長まるるう  2007-08-31 21:49:08  No: 143869

>1テーブルに1SQLの結果しか対応できない仕組みになっているのなら
仕組みも何も。。。
逆に1つのテーブルに2つのSQLの結果を対応させる方法を、日本語の説明だけで
いいから(プログラムで実現できなくてもいいから)説明して欲しいです。
今回は同じテーブルのデータだから似たような結果になるかもしれないけど、
違うテーブルの検索結果だったら?

対応させるルールが明確にならないとプログラムは動きません。
SQLが違う時点で結果を自動で連結するようなルールは作れないと思います。

DataSet の中に DataTable を2つ用意して表示を切り替えればいいと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加