レコードの検索 |
レコードセット内を検索するためには、Find系メソッドを使います。
条件に一致するレコードが見つかったかどうかは、Recordsetオブジェクトの「NoMatch」プロパティで判定します(見つからない場合はこのプロパティに”True”が代入されます)。
なお、一般的にはできる限りクエリやSQL文の段階でデータを絞り込んでおいた方が効率的に処理できます。
|
■タイトルに”入門”という文字を含むレコードを列挙する例
Dim dbs As Database
Dim rst As Recordset
Dim strCriteria As String
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("tbl書籍情報", dbOpenDynaset)
With rst
strCriteria = "タイトル Like '*入門*'"
.FindFirst strCriteria
Do Until .NoMatch
Debug.Print !ISBN, !タイトル, !著者, !発行日, !価格
.FindNext strCriteria
Loop
.Close
End With
プログラムのポイント:
- まず、検索条件を組み立てます。これはSQL分のWhere句に相当する文字列です。→ここではstrCriteriaという変数にそれを代入しています
- 検索条件を引数として、FindFirstメソッドを実行します。これによって最初の該当レコードが検索されます。見つかるとレコードが移動します。それに対して更新や削除等の操作ができます。
- 続いて、FindNextメソッドを実行するたびに、順次、次の該当レコードが検索されます。
- NoMatchプロパティがTrueになるまでループを回すことで、検索条件に一致するすべてのレコードを列挙することができます。
- OpenRecordsetメソッドで開く対象がテーブルの場合、Find系メソッドを使うためには、”dbOpenDynaset”または”dbOpenSnapshot”を引数として指定する必要があります。
|