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

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

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

Re[4]: Listboxで複数条件し、GRIDVIEWで結果を出したい


(過去ログ 66 を表示中)

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

■37938 / inTopicNo.1)  Listboxで複数条件し、GRIDVIEWで結果を出したい
  
□投稿者/ zi_wa (1回)-(2009/07/03(Fri) 11:08:26)

分類:[.NET 全般] 

Listboxで条件を絞込み、GRIDVIEWで検索結果を出す画面
を作成しています。
Listboxの条件絞込みを、最初は1つだけ選択するようにし
ていましたが、SelectionModeをMultipleにして、複数
選択できるようにしました。

GRIDVIEWのデータソースの構成は
SQLステートメント:
SELECT * FROM TABLE_A WHERE 県名 IN(@KENMEI)
パラメータの定義:
 パラメータ名@KENMEI
 パラメータソース:Control
 ControlID:Listbox
と設定しています。

これで検索結果を出してみると、一番最初の条件しか結果表示されません。
例)ListBox県名:佐賀 福岡
  検索結果:佐賀のみの情報

試しに、.VBのソースで
Protected Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
Dim i As Integer
For i = 0 To ListBox1.Items.Count - 1
If ListBox1.Items(i).Selected Then
Response.Write(ListBox1.Items(i).Text)
End If
Next
End Sub

と書き込むと、画面上部に佐賀 福岡 といったかんじで、ListBoxで選んだ項目が表示されました。

という事で表示されたものの、「・・で?」という感じでここで行き詰ってしまいました。

istboxで複数条件で絞込み、GRIDVIEWで検索結果を出す画面はどうやったらよいか
アドバイスお願い染ます。
引用返信 編集キー/
■37939 / inTopicNo.2)  Re[1]: Listboxで複数条件し、GRIDVIEWで結果を出したい
□投稿者/ やじゅ (1072回)-(2009/07/03(Fri) 11:43:14)
やじゅ さんの Web サイト
No37938 (zi_wa さん) に返信
> SQLステートメント:
> SELECT * FROM TABLE_A WHERE 県名 IN(@KENMEI)

IN句(SQL)へのパラメータとして、複数の値は使用は出来ません。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=36398&forum=26
引用返信 編集キー/
■38494 / inTopicNo.3)  Re[2]: Listboxで複数条件し、GRIDVIEWで結果を出したい
□投稿者/ daisuke (1回)-(2009/07/16(Thu) 17:24:31)
> ■No37938 (zi_wa さん) に返信
複数選択した件数に合わせ、SQL文のINの条件が増える必要がありますが、パラメータである@KENMEIは1つしか設定できないようです。
@KENMEIの値に "'佐賀','福岡'"と選んだ候補の組み合わせを設定できるといいのですが、これもパラメータ任せでは思うようになりません。

せっかくListBoxの選択内容を取得されたのですから、そこからSQL文を作ったらどうでしょうか。
SELECT * FROM TABLE_A WHERE 県名 IN('佐賀','福岡',・・・)

次に作成したSQL文で、データを取得、GridViewにBindすれば表示されるはずです。
Dim cn As New System.Data.OleDb.OleDbConnection("※接続文字列 環境に合わせて設定します。")
cn.Open()

Dim da As New System.Data.OleDb.OleDbDataAdapter()
da.SelectCommand.Connection = cn
da.SelectCommand.CommandText = "※作成したSQL文。"

Dim ds As New DataSet()
da.Fill(ds)

GRIDVIEW.DataSource = ds.Tables(0)
GRIDVIEW.DataBind()

da.Dispose()
da = Nothing

cn.Close()
cn.Dispose()
cn = Nothing

※コードは試していませんので、確認願います。
引用返信 編集キー/
■38496 / inTopicNo.4)  Re[3]: Listboxで複数条件し、GRIDVIEWで結果を出したい
□投稿者/ みきぬ (536回)-(2009/07/16(Thu) 17:40:33)
No38494 (daisuke さん) に返信
> せっかくListBoxの選択内容を取得されたのですから、そこからSQL文を作ったらどうでしょうか。
> SELECT * FROM TABLE_A WHERE 県名 IN('佐賀','福岡',・・・)
>
いや、せっかくパラメータクエリを使っているんだから、それは活かした方がいいと思うんだなあ。
やじゅさんが示しているリンク先にもあるけど、現状では

"SELECT * FROM TABLE_A WHERE 県名 IN(@KENMEI0, @KENMEI1, ... , @KENMEIn)"

のようなクエリ文字列をプログラム内で組み立てて、それぞれの検索値を @KENMEI0 〜 @KENMEIn へ割り当てていくのがいいんじゃないかなあ。


それとも、今ならもっと良い方法があるのかなあ。
引用返信 編集キー/
■38499 / inTopicNo.5)  Re[4]: Listboxで複数条件し、GRIDVIEWで結果を出したい
□投稿者/ daisuke (2回)-(2009/07/16(Thu) 18:32:40)
No38496 (みきぬ さん) に返信
> "SELECT * FROM TABLE_A WHERE 県名 IN(@KENMEI0, @KENMEI1, ... , @KENMEIn)"
なるほど、プログラム内でパラメータを動的に設定すればいいですね。
勉強になります。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -