OleDbDataAdapter.Fillメソッド
OleDbDataAdapterオブジェクトのFillメソッドを使って、AccessのMDBファイルから取得したレコードの指定列だけをComboBoxに表示し、選択した項目のコードを取得するプログラムを作成します。
たとえば、部署名を選択したら、その部署に付した部署コードを取得し表示します。
実行結果
VB Express [MDB版] サンプルプログラム
- フォームにコンボボックスとラベルを貼り付け
- OleDbDataAdapter.Fillでレコード取得
- ComboBoxのDatasourceプロパティでデータバインド
- コンボボックスに部署マスター表の部署名称を表示
- 選択した部署名から部署コードを取得し、ラベル(Label2)に表示
- 初期表示時は「部署コードを選択してください」と表示
- コンボボックスの選択項目が変更された時の処理は、SelectedIndexChangedイベントハンドラに実装
- 【注意】接続文字列は、アプリケーション構成ファイルapp.configから取得 してください。
Key | 列名 | データ型 | NULLを許容 |
---|---|---|---|
● | 部署コード | nchar(4) | しない |
部署名称 | nvarchar(20) | しない |
OleDbDataAdapter.Fillで特定列をComboBoxに表示するサンプルはこちら
ソースリストの枠内をクリックすると全選択できます。
Option Strict On Imports System.Data.OleDb Public Class Form1 '********************************************************************* ' コンボボックスの選択項目が変更された時 '********************************************************************* Private Sub ComboBox1_SelectedIndexChanged( _ ByVal sender As Object, ByVal e As System.EventArgs _ ) Handles ComboBox1.SelectedIndexChanged ' 選択項目が変更されたら、部署コードをラベルLabel2に表示 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 OleDbConnection Using cmd As New OleDbCommand ' 接続文字列の設定(MDB) con.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Application.StartupPath & _ "\販売管理データベース.mdb" ' OleDbCommand.Connectionプロパティの設定 cmd.Connection = con ' SQL文の設定 cmd.CommandText = _ "SELECT 部署コード, 部署名称 " & _ "FROM 部署マスター表 ORDER BY 部署コード" ' 部署マスター表からレコード取得 Dim dt As New DataTable Using da As New OleDbDataAdapter da.SelectCommand = cmd da.Fill(dt) ' ComboBox1にバインド 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