任意のフィールドの値を元に検索する
Sub レコード検索() 'Find メソッドを使用する Dim myCon As New ADODB.Connection, myRS As New ADODB.Recordset Dim FileName As String FileName = ThisWorkbook.Path & "\mdb\2-sampleDB.mdb" myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileName myRS.Open "アルバイト", myCon, adOpenForwardOnly, adLockOptimistic Do '「手当」フィールドが「1000」のレコードを検索 myRS.Find "手当 =1000" '該当レコードがない場合は処理を抜ける If myRS.EOF = True Then Exit Do myRS.Delete 'カレントレコードを次のレコードへ移動 myRS.MoveNext Loop myRS.Close: Set myRS = Nothing myCon.Close: Set myCon = Nothing End Sub
Find メソッドを使用して検索する
Recordset オブジェクト.Find Criteria
検索文字列 | 検索対象 |
---|---|
"手当 = 1000" | 「手当」フィールドの値が「1000」のレコード |
"時給 >= 1000" | 「時給」フィールドの値が「1000以上」のレコード |
"氏名" LIKE "*田*" | 「氏名」フィールドに「田」と言う文字が含まれるレコード |
該当レコードが見つかった場合には、カレントレコードはその位置に移動する。
続けてFind メソッドを使用する場合にはカレントレコードの位置から検索を開始する。
すると、カレントレコードが再度検索されるため、このリストでは「MoveNext」でカレントレコード位置を移動させている。
該当レコードが見つからない場合、エラーは発生せず、カレントレコードの位置はレコード終端(最終レコードを超えたEOFの位置)に移動する
Find メソッドによる検索は、Seek メソッドより低速になる。
Find メソッドを使用して検索する
Find (Criteria, SkipRows, SearchDirection, Start)
Criteria | 検索に使用する列の名前、比較演算子、および値を指定するステートメントを含む文字列型(String) の値を指定します。 |
---|---|
SkipRows | 省略可能です。検索を開始する、カレント行またはStartブックマークからの行のオフセットを指定する長整数型(Long) の値を指定します。既定値は 0です。既定では、カレント行から検索が開始されます。 |
SearchDirection | 省略可能です。検索方向に向かって、カレント行または使用可能な次の行のいずれから検索を開始するかを指定する SearchDirectionEnum値を指定します。検索に成功しなかった場合、この値にadSearchForward が指定されていると、Recordsetの終わりで停止します。また、検索に成功しなかった場合、この値にadSearchBackward が指定されていると、Recordsetの先頭で停止します。 |
Start | 省略可能です。検索の開始位置として使用するバリアント型(Variant) のブックマークを指定します。 |
定数 | 値 | 説明 |
---|---|---|
adSearchBackward | -1 | 後方検索をし、Recordsetの先頭で終了します。一致するレコードが見つからない場合、レコードポインタは BOF に移動します。 |
adSearchForward | 1 | 前方検索をし、Recordsetの末尾で終了します。一致するレコードが見つからない場合、レコードポインタは EOF に移動します。 |
「アルバイト」テーブル
実行結果