DataViewにフィルタ条件を設定してレコードを絞り込むサンプル

DataViewにフィルタ条件を設定してレコードを絞り込むサンプル

 

このサンプルは、DataViewにフィルタ条件を設定してレコードを絞り込みます。フィルタ条件は、DataViewRowFilterプロパティに設定します。RowFilterプロパティに設定するフィルタ条件は、SQLWhere句の書式で記述します。

 

DataView.RowFilter = “Ken=’埼玉県’”

DataView.RowFilter = “Ken=’埼玉県’ And ContactTitle=’料理長’”

DataView.RowFilter = “Ken=’埼玉県’ And ContactTitle Like ‘%’”

 

RowFilterプロパティでレコードを絞り込むときは、Find()FindRows()メソッドのようにSortプロパティに検索するカラムを設定する必要ありません。

 

このサンプルでは、以下のノウハウを習得することができます。

 

  得意先テーブルをDataTableに取り込む方法

  DataTableからDataViewを作成する方法

  DataViewにフィルタ条件を設定してレコードを絞り込む方法

  絞り込んだレコードの件数を取得する方法

 

サンプルのPage_Load()イベントでは、DataViewにフィルタ条件を設定してレコードを絞り込んでいます。行8-9では、得意先テーブルからレコードを抽出するSQLを生成しています。行10-13では、OleDbConnectionOleDbDataAdapterDataTableを生成しています。

 

15では、OleDbDataAdapterFill()メソッドで得意先テーブルをDataTableに取り込んでいます。行16では、DataTableからDataViewを生成しています。行17では、DataViewRowFilterプロパティにフィルタ条件を設定してレコードを絞り込んでいます。フィルタ条件は、SQLWhere句の書式で記述します。このサンプルでは、フィルタ条件として"Ken = '埼玉県'"を指定して埼玉県の得意先を絞り込んでいます。RowFilterプロパティで絞り込んだレコードの件数は、DataViewCountプロパティに格納されています。

 

Response.Write(String.Format(“レコード件数: {0}”, dv.Count))

 

20-22For…Nextでは、DataViewからDataRowViewを取り出してSub DisplayRow()に渡しています。DisplayRow()では、DataRowViewのすべてのカラム名とカラム値を表示します。

 

  7: Sub Page_Load()
  8:   Dim strSQL As String = "Select CustomerID, CompanyName, " & _
  9:     "ContactName, Phone, Ken From Customers"
 10:   Dim con As New OleDbConnection( _
 11:     ConfigurationSettings.AppSettings("conStringNw"))
 12:   Dim da As New OleDbDataAdapter(strSQL, con)
 13:   Dim dt As New DataTable("Customers")
 14:
 15:   da.Fill(dt)
 16:   Dim dv As New DataView(dt)
 17:   dv.RowFilter = "Ken = '
埼玉県'"
 18:   Response.Write("<h2>DataView.RowFilter()</h2>")
 19:   Dim intRow As Integer
 20:   For intRow = 0 To dv.Count - 1
 21:     DisplayRow(dv(intRow))
 22:   Next
 23: End Sub