● DataTableからレコードを抽出するサンプル

図 DataTableからレコードを抽出するサンプル
このサンプルは、得意先テーブルをDataTableに取り込んで抽出条件を指定してレコードを抽出します。レコードを抽出するには、DataTableのSelect()メッドを使用します。Select()メソッドの引数には、抽出条件としてカラム名と条件を指定します。抽出条件は、SQLのWhere句と同じ書式で指定します。実行結果として抽出したレコードを表示します。
このサンプルでは、以下のノウハウを習得することができます。
▲ 得意先テーブルをDataTableに取り込む方法
▲ DataTableから抽出条件を指定してレコードを抽出する方法
▲ DataTableのSelect()メソッドに抽出条件を指定する方法
▲ 抽出条件にワイルドカード(%)を指定する方法
サンプルのPage_Load()イベントでは、得意先テーブルをDataTableに取り込んで抽出条件を指定してレコードを抽出します。行8-9では、得意先テーブルからレコードを抽出するSQLを生成しています。行10-13では、OleDbConnection、OleDbDataAdapter、DataTableのインスタンスを生成しています。
行17では、OleDbDataAdapterのFill()メソッドで得意先テーブルをDataTableに取り込んでいます。行18では、DataTableのSelect()メソッドでレコードを抽出しています。Select()メソッドの引数には、抽出条件としてKen=’愛知県’ And
ContactTitile=’料理長’を指定しています。この抽出条件は、愛知県内で役職が料理長の得意先を抽出することを意味します。Select()メソッドの戻り値としてDataRowのコレクションが返されます。行20-22のFor Each…Nextでは、arrRo
行23では、DataTableのSelect()メソッドでワイルドカード(%)を使用しています。抽出条件のKen=’愛知県’ And ContactTitle Like ‘%長’は、愛知県内で役職に「長」が付く得意先を抽出することを意味します。ワイルドカード指定を行うには、Likeと%を使用します。’%長’のようなワイルドカードを指定したときは、「店長」、「料理長」、「部長」、「課長」などが該当します。行25-27のFor Each…Nextでは、arrRo
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 arrRo
16:
17: da.Fill(dt)
18: arrRo
19:
Response.Write("<h2>DataTable.Select(1)</h2>")
20: For Each dr In arrRo
21: DisplayRow(dr)
22: Next
23: arrRo
24: Response.Write("<h2>DataTable.Select(2)</h2>")
25: For Each dr In arrRo
26: DisplayRow(dr)
27: Next
28: End Sub