電子書籍の厳選無料作品が豊富!

エリアテーブルを取得し
コンボボックスの見える値は「値」にして
コンボボックスを取得するときには「コード」を
取れるようにしたいと思っています。
どのように書くと取得できるのでしょうか?
バインドするやり方が分からなくて
下記のようになっています。

Dim strSql As String
Dim dr As SqlClient.SqlDataReader = Nothing
Dim daAdp As New SqlClient.SqlDataAdapter
Dim cmd As New SqlClient.SqlCommand
Dim ds As DataSet = New DataSet()

mConn = New SqlConnection
'DBのオープン
 Conn.DbConnect()
  Dim dbCmd As SqlCommand = Nothing
'SQL発行
strSQL = "SELECT コード,値 "
strSQL = strSQL & "FROM エリア"

Conn.ExecSqlSelect(strSql, dr)

  ComboBox1.Items.Clear()
Do While dr.Read
ComboBox1.Items.Add(dr.GetString(1))
ComboBox1.SelectedItem = dr.GetString(0)
Loop

A 回答 (2件)

VB.NETでやるなら コントロールに対してDataSet(またはDataTable)をDataSourceに設定し、DisplayMemberおよびValueMemberを適切に設定


TextやSelectedValueで取り出すほうがいいか知れません

' フォームクラスの変数
DIM objDS as New DataSet

' FormのLoadイベントなどの初期化処理
' daAdpを生成してあるとして
daAdp.Fill( objDS )
ComboBox1.DataSource = objDS.Tables(1)
ComboBox1.DisplayMember = "値"
ComboBox1.ValueMember = "コード"

' ComboBox1の SelectedIndexChangeイベントなどで
dim sCode As String, sData as String
sCode = ComboBox1.SelectedValue.ToString
sData = ComboBox1.Text
といった具合で取得します

この回答への補足

ありがとうございます。
何とか取得できました。

データセットのために開いたコネクションは
いつ閉じるのが普通ですか?
これは開けっ放しにしておくものでしょうか?

補足日時:2009/08/11 17:23
    • good
    • 0

データの更新などがなければ DataSetをFillなどで取得した後で閉じてしまえばいいと思いますよ



データ再読み取りの処理などがあるならその時点でコネクションを開いてやるなどの処理が必要でしょう

質問のコードでしたら Do..Loopを抜けた時点で閉じてしまえばいいように思います
    • good
    • 0
この回答へのお礼

ありがとうございました。
できました。

お礼日時:2009/08/11 20:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!