CheckedListBoxで選択した複数のDisplayMemberの各ValueMemberを取得するには
- 題名: CheckedListBoxで選択した複数のDisplayMemberの各ValueMemberを取得するには
- 著者: けいすけ
- 日時: 2012/01/14 20:07:40
- ID: 29607
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: CheckedListBoxで選択した複数のDisplayMemberの各ValueMemberを取得するには
- 著者: shu
- 日時: 2012/01/14 22:10:05
- ID: 29608
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: CheckedListBoxで選択した複数のDisplayMemberの各ValueMemberを取得するには
- 著者: もりお
- 日時: 2012/01/15 2:33:15
- ID: 29610
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: CheckedListBoxで選択した複数のDisplayMemberの各ValueMemberを取得するには
- 著者: けいすけ
- 日時: 2012/01/15 18:03:48
- ID: 29611
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: CheckedListBoxで選択した複数のDisplayMemberの各ValueMemberを取得するには
- 著者: けいすけ
- 日時: 2012/01/15 18:05:02
- ID: 29612
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: CheckedListBoxで選択した複数のDisplayMemberの各ValueMemberを取得するには
- 著者: けいすけ
- 日時: 2012/01/15 18:53:55
- ID: 29613
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: CheckedListBoxで選択した複数のDisplayMemberの各ValueMemberを取得するには
- 著者: けいすけ
- 日時: 2012/01/15 18:59:48
- ID: 29614
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: CheckedListBoxで選択した複数のDisplayMemberの各ValueMemberを取得するには
- 著者: shu
- 日時: 2012/01/15 21:56:04
- ID: 29616
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: CheckedListBoxで選択した複数のDisplayMemberの各ValueMemberを取得するには
- 著者: けいすけ
- 日時: 2012/01/21 12:05:11
- ID: 29632
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[6]: CheckedListBoxで選択した複数のDisplayMemberの各ValueMemberを取得するには
- 著者: けいすけ
- 日時: 2012/01/21 12:46:26
- ID: 29633
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[7]: CheckedListBoxで選択した複数のDisplayMemberの各ValueMemberを取得するには
- 著者: けいすけ
- 日時: 2012/01/21 18:56:14
- ID: 29634
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[8]: CheckedListBoxで選択した複数のDisplayMemberの各ValueMemberを取得するには
- 著者: けいすけ
- 日時: 2012/01/21 18:58:13
- ID: 29635
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
はじめまして、こんにちは。
お世話になります。
使用OS:XPSP3
使用言語:VS.NET2003
使用データベース:SQLServer2000
以下、質問させて頂きます。
SQLServer2000のデータベースに、
[業者マスタ]と[商品マスタ]の2つのテーブルがあります。
[業者マスタ]
(デザイン)
業者C(smallint)(主キー)
業者名(nvarchar)
(内容)
1 A社
2 B社
3 C社
4 D社
[商品マスタ]
(デザイン)
商品C(int)(主キー)
業者C(smallint)
商品名(nvarchar)
(内容)
100 1 商品A
101 2 商品B
102 3 商品C
103 4 商品D
104 1 商品E
105 5 商品F
フォーム(frmKensaku)をLoadしますと、
1つのCheckedListBox(lstGyousya)と、
1つの検索ボタン(btnKensaku)と、
データグリッド(dgrSyohin)があります。
lstGyousyaには、[業者マスタ]の[業者名]が表示されている状態にしています。
ValueMember=[業者C]、DisplayMember=[業者名]を設定しています。
検索したい[業者名]を複数チェックします。
この記事においては、[業者C]=1、2、3である、A社〜C社をチェックします。
この状態で、検索ボタンを押しますと、
[商品マスタ]より検索された商品一覧([商品C]、[業者C]、[商品名])がdgrSyohinに表示されるようにしたいと考えております。
[商品マスタ]の検索を行う際に必要なSQL文には、
lstGyousyaで選択された[業者名](DisplayMember)に対応する[業者C](ValueMember)が取得され、
"SELECT * FROM [商品マスタ] WHERE ([業者C] = 1 or 2 or 3)"
というSQL文が使われるようにしたいと考えております。
実際にこのコードを実行しますと、
lstGyousyaのValueMemberを取得する際に、
「型'Byte'の既定メンバが見つかりません」とエラー表示されてしまいます。
(下記コードの※※※の部分です)
複数のValueMemberを取得するためのコードに、
誤りがございましたら、
教えて頂きたく存じます。
お手数と存じますが、どうぞよろしくお願い申し上げます。
(コード)
-------------------------------------------------------------------
Private Sub frmKensaku_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call ListBoxGyousya()
End Sub
-------------------------------------------------------------------
Private Sub ListBoxGyousya()
Dim cn As New SqlClient.SqlConnection
Dim da As SqlClient.SqlDataAdapter
Dim ds As New DataSet
Dim strSQL As String
Try
cn.ConnectionString = (接続文字列)
strSQL = "select [業者C],[業者名] from [業者マスタ] order by [業者C]"
da = New SqlClient.SqlDataAdapter(strSQL, cn)
da.Fill(ds)
lstGyousya.ValueMember = "業者C"
lstGyousya.DisplayMember = "業者名"
lstGyousya.DataSource = ds.Tables(0)
lstGyousya.SelectedIndex = -1
Catch ex As Exception
MessageBox.Show(ex.Message, "ListGyousya",MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
ds = Nothing
da = Nothing
cn = Nothing
End Try
End Sub
------------------------------------------------------------------------
Private Sub btnKensaku_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKensaku.Click
Dim cnS As New SqlClient.SqlConnection(接続文字列)
Dim daS As New SqlClient.SqlDataAdapter
Dim strSQL As String
Dim strGyousya As String
Dim ds As New DataSet
Dim i As Integer
Dim blnLoopCheck As Boolean
Try
blnLoopCheck = False
If lstGyousya.CheckedItems.Count <> 0 Then
For i = 0 To lstGyousya.Items.Count - 1
If blnLoopCheck = False Then
strGyousya = "([業者C] = "
If lstGyousya.GetItemChecked(i) = True Then
strGyousya = "" & lstGyousya.SelectedValue(i).ToString & ""
End If
blnLoopCheck = True
Else
If lstGyousya.GetItemChecked(i) = True Then
strGyousya = "or"
strGyousya = "" & lstGyousya.SelectedValue(i).ToString & ""'※※※ここでエラー発生※※※
End If
End If
Next
strGyousya &= ")"
End If
strSQL = "select * from [商品マスタ] where " & strGyousya & ""
daS = New SqlClient.SqlDataAdapter(strSQL, cnS)
daS.Fill(ds, "商品マスタ")
dgrSyohin.DataSource = ds
Catch ex As Exception
MessageBox.Show(ex.Message, "FrameShukei", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
cnS = Nothing
End Try
End Sub
-----------------------------------------------------------------------