VB 2008 [SQL Server 2008版]
![]() |
![]() |
- フォームにコンボボックスとラベルを貼り付け
- SqlDataAdapter.Fillでレコード取得
- ComboBoxのDatasourceプロパティでデータバインド
- コンボボックスに部署マスター表の部署名称を表示
- 選択した部署名から部署コードを取得し、Label2に表示
- 初期表示時は「部署コードを選択してください」と表示(右上図)
- 接続文字列は、アプリケーション構成ファイル(app.config)から取得
- コンボボックスの選択項目が変更された時の処理は、SelectedIndexChangedイベントハンドラに実装
販売管理データベース(部署マスター表)
| Key | 列名 | データ型 | NULLを許容 |
|---|---|---|---|
| ● | 部署コード | nchar(4) | しない |
| 部署名称 | nvarchar(20) | しない |
VB 2008 [MDB版]
VB.NET [MDB版]
Option Strict On Imports System.Data.SqlClient Imports System.Configuration ' 参照の追加 System.Configuration Public Class Form1 '********************************************************************* ' コンボボックスの選択項目が変更された時の処理 '********************************************************************* Private Sub ComboBox1_SelectedIndexChanged( _ ByVal sender As Object, ByVal e As System.EventArgs _ ) Handles ComboBox1.SelectedIndexChanged ' 選択項目が変更されたら、部署コードをラベルに表示 If ComboBox1.SelectedIndex >= 0 Then Label2.Text = ComboBox1.SelectedValue.ToString End If End Sub '********************************************************************* ' フォームロード処理 '********************************************************************* Private Sub Form1_Load( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Try Using con As New SqlConnection Using cmd As New SqlCommand ' 接続文字列をapp.configファイルから取得 ' (SQL Server 2008 Express Edition) Dim settings As ConnectionStringSettings settings = _ ConfigurationManager.ConnectionStrings _ ("販売管理ConnectionString") If settings Is Nothing Then ' 接続文字列取得エラー MessageBox.Show("接続文字列がapp.configに未登録") Else ' 接続文字列の設定 con.ConnectionString = settings.ConnectionString ' SqlCommand.Connectionプロパティの設定 cmd.Connection = con End If ' SQL文の設定 cmd.CommandText = _ "SELECT 部署コード, 部署名称 " & _ "FROM 部署マスター表 ORDER BY 部署コード" ' 部署マスター表からレコード取得 Dim dt As New DataTable Using da As New SqlDataAdapter da.SelectCommand = cmd da.Fill(dt) ' データグリッドビューにバインド ComboBox1.DataSource =dt End Using ' コンボボックスに表示する列の設定 ComboBox1.DisplayMember = "部署名称" ' 選択した項目のコードを ' 取得するための設定 ComboBox1.ValueMember = "部署コード" ' 項目を未選択状態に設定 ComboBox1.SelectedIndex = -1 ComboBox1.Text = "部署を選択してください" ' コード表示Label2を初期化 Label2.Text = Nothing End Using End Using Catch ex As Exception ' 例外が発生した時の処理 MessageBox.Show(ex.ToString) End Try End Sub End Class
DataTableの代わりに、DataSetを使って、SqlDataAdapter.Fillでレコードを取得するサンプル
' 部署マスター表からレコード取得
Dim ds As New DataSet
Using da As New SqlDataAdapter
da.SelectCommand = cmd
da.Fill(ds, "部署テーブル")
' データグリッドビューにバインド
ComboBox1.DataSource = ds.Tables("部署テーブル")
End Using

