VB.NET:データグリッドコントロールに設定されている抽出条件と同じ抽出条件でCommandオブジェクトを実行する例

2018年8月14日

データグリッドに抽出条件によって抽出されたデータを表示している際に、データグリッドに設定されている抽出条件を使ってCommandオブジェクトを実行する方法について覚書。

サンプルプログラムについて

データグリッドに設定されている抽出条件と同じ抽出条件でCommandオブジェクトを実行したい場合、Commandオブジェクトに設定するSQL文のWhere以降にMe.データグリッドコントロール名.DataSource.Filter を文字列結合すればよい。

以下にVB.NETのサンプルプログラムを記載する。

Dim con As OleDb.OleDbConnection = New OleDb.OleDbConnection(My.Settings.NorthwindConnectionString)
  con.Open()
  Dim cmd As New OleDb.OleDbCommand
  cmd.Connection = con
  If Me.社員DataGridView.DataSource.filter Is Nothing Then
     'フィルターがかかっていなかった場合の処理
     cmd.CommandText = "SELECT * FROM 社員"
  Else
     cmd.CommandText = "SELECT * FROM 社員 Where " & Me.社員DataGridView.DataSource.filter
  End If
  Dim dr As OleDb.OleDbDataReader = cmd.ExecuteReader
    If dr.HasRows Then
       Do While dr.Read
          Debug.Print(dr("社員コード").ToString + vbTab + dr("氏名") + vbTab + dr("部署名"))
       Loop
    Else
       MsgBox("データなし")
    End If
  dr.Close()
  con.Close()
  
(Visited 3 times, 3 visits today)