DataViewのレコードを検索してDataRowViewの配列を取得するサンプル

DataViewのレコードを検索してDataRowViewの配列を取得するサンプル

 

このサンプルは、DataViewを特定のカラムで検索して複数のレコードを取得します。特定のカラムで検索するには、DataViewSortプロパティにカラムを設定して並べ替えします。複数のレコードを検索するには、DataViewFindRows()メソッドを使用します。FindRows()メソッドの引数には、Sortプロパティに設定されているカラムの値を指定します。FindRows()メソッドの戻り値としてDataRowViewの配列を返します。シングルレコードを検索するときは、Find()メソッドを使用します。

 

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

 

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

  DataTableからDataViewを作成する方法

  DataViewを特定のカラムで検索して複数のレコードを取得する方法

  検索したレコード件数を取得する方法

 

サンプルのPage_Load()イベントでは、DataViewを特定のカラムで検索して複数のレコードを取得します。行8-9では、得意先テーブルからレコードを抽出するSQLを生成しています。行10-13では、OleDbConnectionOleDbDataAdapterDataTableを生成しています。

 

15では、OleDbDataAdapterFill()メソッドで得意先テーブルをDataTableに取り込んでいます。行16では、DataTableからDataViewを生成しています。行17では、DataViewSortプロパティにKenを設定して得意先を都道府県の昇順に並べ替えています。行18では、DataViewFindRows()メソッドで埼玉県の得意先を検索しています。FindRows()メソッドの引数には、Sortプロパティに設定されているカラムの値を指定します。FindRows()メソッドからは、戻り値としてDataRowViewの配列を返します。FindRows()メソッドから返されたレコード件数を取得するには、arrRows.Lengthのように配列の要素数を取得します。

 

Response.Write(String.Format(“レコード件数{0}”, arrRows.Length))

 

21-23For Each…Nextでは、arrRowsコレクションから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.Sort = "Ken"
 18:   Dim arrRows As DataRowView() = dv.FindRows("
埼玉県")
 19:   Response.Write("<h2>DataView.FindRows()</h2>")
 20:   Dim drv As DataRowView
 21:   For Each drv In arrRows
 22:     DisplayRow(drv)
 23:   Next
 24: End Sub