MDB ListBox [VB]

Visual Basic ADO.NET [Community Express]

OleDbDataAdapter.Fillメソッド

OleDbDataAdapterオブジェクトのFillメソッドを使って、Accessの表(MDBファイル)から取得したレコードの指定列をListBoxに表示し、選択した項目のコードを取得するプログラムを作成します。

VB 2008 [SQL Server版]

SqlDataAdapter.Fillで特定列をListBoxに表示するサンプルはこちら

VB Express [MDB版] サンプルプログラム

サンプル1 サンプル2
  • フォームにリストボックスとラベルを貼り付け
  • OleDataAdapter.Fillでレコード取得
  • ListBoxのDatasourceプロパティでデータバインド
  • リストボックスに部署マスター表の部署名称を表示
  • 選択した部署名の部署コードをLabel2に表示
  • 初期表示時は未選択状態
  • 接続文字列は、アプリケーション構成ファイル(app.config)から取得

販売管理データベース(部署マスター表

Key 列名 データ型 NULLを許容
部署コード nchar(4) しない
部署名称 nvarchar(20) しない
Option Strict On
Imports System.Data.OleDb

Public Class Form1

    '***********************************************************
    ' リストボックスの選択項目が変更された時の処理
    '***********************************************************
    Private Sub ListBox1_SelectedIndexChanged( _
        ByVal sender As Object, ByVal e As System.EventArgs _
        ) Handles ListBox1.SelectedIndexChanged

        ' 選択項目が変更されたら、部署コードをラベルに表示
        If ListBox1.SelectedIndex >= 0 Then
            Label2.Text = ListBox1.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)
                    ' ListBox1にバインド
                    Me.ListBox1.DataSource =dt
                End Using

                ' リストボックスに表示する列の設定
                ListBox1.DisplayMember = "部署名称"
                ' 選択した項目のコードを
                ' 取得するための設定
                ListBox1.ValueMember = "部署コード"
                ' 項目を未選択状態に設定
                ListBox1.SelectedIndex = -1
                Label2.Text = Nothing
            End Using
          End Using
        Catch ex As Exception
            ' 例外が発生した時の処理
            MessageBox.Show(ex.ToString)
        End Try

    End Sub

End Class