●
DataViewのレコードを検索してインデックス番号を取得するサンプル

図 DataViewのレコードを検索してインデックス番号を取得するサンプル
このサンプルは、DataViewから特定のカラム値を指定してレコードを検索します。特定のカラムでレコードを検索するには、Sortプロパティにカラムを設定してからFind()メソッドで値を指定します。
このサンプルでは、以下のノウハウを習得することができます。
▲ 得意先テーブルをDataTableに取り込む方法
▲ DataTableからDataViewを作成する方法
▲ DataViewを特定のカラムで検索する方法
サンプルのPage_Load()イベントでは、DataViewを担当者名で検索してレコードを取得します。行8-9では、得意先テーブルからレコードを抽出するSQLを生成しています。行10-13では、OleDbConnection、OleDbDataAdapter、DataTableを生成しています。
行15では、OleDbDataAdapterのFill()メソッドで得意先テーブルをDataTableに取り込んでいます。行16では、DataTableからDataViewを生成しています。行17では、DataViewのSortプロパティにContactNameを設定して得意先を担当者名の昇順に並べ替えています。行18では、DataViewのFind()メソッドで担当者名を指定して得意先を検索しています。Find()メソッドは、Sortプロパティに設定されているカラムを検索します。得意先が見つかったときは、レコードのインデックス番号を返します。レコードが見つからないときは、-1を返します。
行20-22では、レコードが見つかったときSub DisplayRow()にDataRowViewを渡しています。DisplayRow()では、DataRowViewのすべてのカラム名とカラム値を表示します。
7: Sub Page_Load()
8: Dim strSQL As String =
"Select CustomerID, CompanyName, " & _
9: "ContactName,
Phone 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 = "ContactName"
18: Dim intIndex As Integer = dv.Find("林 千春")
19:
Response.Write("<h2>DataView.Find()</h2>")
20: If intIndex <> -1 Then
21:
DisplayRow(dv(intIndex))
22: End If
23: End Sub