データグリッドに抽出条件によって抽出されたデータを表示している際に、データグリッドに設定されている抽出条件を使って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()
コメント