DataTableからレコードを抽出して並べ替えるサンプル

DataTableからレコードを抽出して並べ替えるサンプル

 

このサンプルは、得意先テーブルをDataTableに取り込んで抽出条件を指定してレコードを抽出して並べ替えします。レコードを抽出して並べ替えするには、DataTableSelect()メッドを使用します。Select()メソッドの引数には、抽出条件と並べ替えするカラムを指定します。抽出条件は、SQLWhere句と同じ書式で指定します。並べ替えするカラムは、SQLOrder By句と同じ書式で指定します。実行結果として抽出したレコードを表示します。

 

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

 

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

  DataTableから抽出条件と並べ替えするカラムを指定してレコードを抽出する方法

  DataTableSelect()メソッドに抽出条件と並べ替えを指定する方法

  抽出条件にワイルドカード(%)を指定する方法

 

サンプルのPage_Load()イベントでは、得意先テーブルをDataTableに取り込んで抽出条件と並べ替えのカラムを指定してレコードを抽出します。行8-9では、得意先テーブルからレコードを抽出するSQLを生成しています。行10-13では、OleDbConnectionOleDbDataAdapterDataTableのインスタンスを生成しています。

 

17では、OleDbDataAdapterFill()メソッドで得意先テーブルをDataTableに取り込んでいます。行18では、DataTableSelect()メソッドでレコードを抽出しています。Select()メソッドの引数には、抽出条件と並べ替えするカラムを指定しています。抽出条件としてContactTitle Like ’%を指定しています。この抽出条件は、役職に「長」が含まれる得意先を抽出することを意味します。並べ替えのカラムとしてKenを指定していますので、都道府県を昇順に並べ替えします。並べ替えのカラムにはオプションとして昇進(Asc)/降順(Desc)を指定することができます。オプションを省略したときは、昇順が採用されます。複数のカラムを指定するときは、コンマ(,)区切りで指定します。

 

dt.Select(“”, “Ken Asc, ContactTitle Desc”)

 

Select()メソッドの戻り値としてDataRowのコレクションが返されます。行20-22For Each…Nextでは、arrRowsコレクションからDataRowを取り出してSub DisplayRow()に渡しています。DisplayRow()では、DataRowのすべてのカラム名とカラム値を表示します。

 

 

  7: Sub Page_Load()
  8:   Dim strSQL As String = "Select CustomerID, CompanyName, " & _
  9:     "ContactName, ContactTitle, 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:   Dim dr As DataRow
 15:   Dim arrRows As DataRow()
 16:
 17:   da.Fill(dt)
 18:   arrRows = dt.Select("ContactTitle Like '%
'", "Ken")
 19:   Response.Write("<h2>DataTable.Select(Sort Order)</h2>")
 20:   For Each dr In arrRows
 21:     DisplayRow(dr)
 22:   Next
 23: End Sub