特定レコードをDataGridに表示 [VB.NET]

Visual Basic.NET ADO.NETデータベースプログラミング

DataGrid DataAdapter.Fill

DataAdapterオブジェクトのFillメソッド使って、検索したレコードをDataGridに表示します。

MDB版:サンプルプログラム

DataGrid
コントロール プロパティ 設定値
TxtMinCode Text ""
TxtMaxCode Text ""
BtnSelect Text グリッド表示
DgrSyain Caption Text ** 社員一覧 **

データグリッド列スタイルは、DataGridTextBoxColumnオブジェクトを使ってコーディングします。

sample.mdbをプロジェクトフォルダ下のbinフォルダに置きます。

MDB版:サンプルプログラム

あらかじめ、OleDbCommand.ExecuteScalarメソッドで、社員テーブル表の全レコード数を求め、レコード数分のsyain配列要素を確保します。

そして、OleDbCommand.ExecuteReaderメソッドを実行して、全レコードデータをsyain配列に取得します。

ソースリストの枠内をクリックすると全選択できます。

Imports System.Data.OleDb

Public Class FormSelectRangeGrid
    Inherits System.Windows.Forms.Form

#Region " Windows フォーム デザイナで生成されたコード "
    ' 自動生成部分省略
#End Region

  '--------------------------------------------------------------
  ' 検索ボタン:特定範囲のレコードをデータグリッドに表示する
  '--------------------------------------------------------------
  Private Sub BtnSelect_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles BtnSelect.Click

    Dim con As New OleDbConnection()
    Dim cmd As New OleDbCommand()
    Dim da As New OleDbDataAdapter()
    Dim ds As New DataSet()

    ' 社員コード未入力エラーチェック
    If Me.TxtMinCode.Text = "" Or Me.TxtMaxCode.Text = "" Then
        MessageBox.Show("社員コード未入力", "エラー")
        Exit Sub
    End If

    Try
        ' テーブルスタイルを生成する
        Dim tblStyle As New DataGridTableStyle
        tblStyle.MappingName = "社員テーブル"

        ' 列スタイルを生成し、プロパティを設定する
        Dim col(2) As DataGridTextBoxColumn

        ' 1列目:社員コード
        col(0) = New DataGridTextBoxColumn()
        col(0).HeaderText = "コード"
        col(0).MappingName = "社員コード"
        col(0).Width = 40
        col(0).Alignment = HorizontalAlignment.Center
        ' 2列目:社員氏名
        col(1) = New DataGridTextBoxColumn()
        col(1).HeaderText = "社員氏名"
        col(1).MappingName = "社員氏名"
        col(1).Width = 90
        col(1).Alignment = HorizontalAlignment.Left
        ' 3列目:社員カナ名
        col(2) = New DataGridTextBoxColumn()
        col(2).HeaderText = "社員カナ名"
        col(2).MappingName = "社員カナ"
        col(2).Width = 130
        col(2).Alignment = HorizontalAlignment.Left

        ' 列スタイルをテーブルスタイルに追加する
        tblStyle.GridColumnStyles.AddRange(col)

        ' テーブルスタイルをグリッドに追加する
        DgrSyain.TableStyles.Clear()
        DgrSyain.TableStyles.Add(tblStyle)

        ' DB接続文字列の設定
        con.ConnectionString = _
        "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
        Application.StartupPath & "\sample.mdb"

        'コネクションの設定
        cmd.Connection = con

        ' SQL文の設定
        cmd.CommandText = "SELECT 社員コード, 社員氏名, 社員カナ "
        cmd.CommandText &= "FROM 社員テーブル "
        cmd.CommandText &= "WHERE 社員コード >=@minID "
        cmd.CommandText &= "AND 社員コード <= @maxID "
        cmd.CommandText &= "ORDER BY 社員コード"

        cmd.Parameters.Add("@minID", OleDbType.Char, 5)
        cmd.Parameters("@minID").Value = Me.TxtMinCode.Text
        cmd.Parameters.Add("@maxID", OleDbType.Char, 5)
        cmd.Parameters("@maxID").Value = Me.TxtMaxCode.Text

        ' データを取得する 
        da.SelectCommand = cmd
        ds.Clear()
        da.Fill(ds, "社員テーブル")

        ' データをバインドする
        DgrSyain.SetDataBinding(ds, "社員テーブル")

    Catch ex As Exception
        ' 例外が発生した時の処理
        MessageBox.Show(ex.ToString, "例外発生")

    End Try

  End Sub

End Class