VB.NETとSQL Server 2005を使用して、コンボボックスの設定と選択された値の取得方法について解説します。
コンボボックスの設定と選択された値の取得方法
現在、データベース「SQL Server 2005」とVB.NETで開発をしています。
コンボボックスの設定と選択された値の取り方について教えて下さい。
やりたいことは、下記の2点です。
(1)コンボボックスに「T部門テーブル」の部門コード、部門名をセットし、部門名のみを表示する。
(2)コンボボックスが選択された時の、部門コードと部門名の取得の仕方。
コンボボックスの設定は下記のように記述しました。(一応、動作確認をすると、部門名が表示されています。)
この記述方法で質問の内容ができますでしょうか?
よろしくお願いします。
'// 部門コンボボックスのリスト作成
Public Function fnc部門コンボ設定( _
ByRef nObject As Object, _
Optional ByVal nInsertEmptyItem As Boolean = False _
) As Boolean
Dim strSql As String
Dim wCode, wValue As String
' cSqlConnection から SqlCommand のインスタンスを生成する
Dim hCommand As System.Data.SqlClient.SqlCommand = cSqlConnection.CreateCommand()
Try
'リストの再描画
nObject.BeginUpdate()
'リストをクリア
nObject.Items.Clear()
'データ抽出
strSql = "select 部門コード, 部門名 from T部門テーブル order by 部門コード"
'実行する SQL コマンドを設定する
hCommand.CommandText = strSql
'指定した SQL コマンドを実行して SqlDataReader を構築する
Dim cReader As System.Data.SqlClient.SqlDataReader = hCommand.ExecuteReader()
'次のレコードに進める (次のレコードがない場合は False になるため実行されない)
While cReader.Read()
'列名を元に値を取得する
If IsDBNull(cReader("部門コード")) Then
wCode = ""
Else
wCode = cReader("部門コード")
End If
If IsDBNull(cReader("部門名")) Then
wValue = ""
Else
wValue = cReader("部門名")
End If
nObject.Items.Add(New clsItemData(wValue, wCode))
End While
'cReader を閉じる
cReader.Close()
'リストの再描画を再開
nObject.EndUpdate()
'コンボボックスに部門名を表示する設定
nObject.DisplayMember = "部門名"
'部門名に対応した部門コードを SelectdValue で取得する設定
nObject.ValueMember = "部門コード"
Catch ex As Exception
Call subError(ex, True, pLogLocal)
Exit Function
Finally
nObject.EndUpdate()
End Try
'リソースの解放
hCommand.Dispose()
Return True
End Function
お礼
お返事遅くなりました。 人の作成したコードをコピーしたため、clsItemDataというクラスがあること自体わかっていませんでした。 marukun77さんのわかりやすい説明のおかげで理解できました。 本当にありがとうございました。