●概要●
構文 expression.FindFirst Criteria
expression.FindNext Criteria
expression.FindLast Criteria
expression.FindPrevious Criteria
設定項目 内容
expression 既存のダイナセットタイプ、またはスナップショットタイプの
Recordsetオブジェクトを指定[省略不可]
Criteria 検索条件を示す文字列を指定。SQLステートメントのWHERE句の
予約語「WHERE」以降と同じ[省略不可]
RecordsetオブジェクトのFindFirstメソッド、FindNextメソッドを使用して指定した条件を満たすすべてのレコードを検索します。FindFirstメソッドはレコードセットの最初のレコードから条件を満たす最初のレコードを検索し、見つかった場合はそのレコードがカレントレコードとなります。
一方、FindNextメソッドはカレントレコードから検索を行い、条件を満たすレコードが見つかった場合、そのレコードがカレントレコードとなります。どちらのメソッドも条件を満たすレコードが見つからない場合は、RecordsetオブジェクトのNoMatchプロパティがTrueになるため、FindeFirstメソッドを実行したあと、Do Until...LoopステートメントでNoMatchプロパティがTrueになるまでFindNextメソッドで検索することにより、条件を満たすすべてのレコードを検索できます。
同様に、FindLastメソッドと、FindePreviousメソッドを使用してレコードセットの最後からすべてのレコードセットを検索することができます。
ここでは「社員テーブル」をデータソースとしてダイナセットタイプのRecordsetオブジェクトを作成し、「部署コード」が「30」のすべてのレコードを検索します。
・RecordsetオブジェクトのFind系メソッド
メソッド名 検索開始位置 検索する方向
FindFirst 最初のレコード 最後のレコードに向けて
FindLast 最後のレコード 最初のレコードに向けて
FindNext カレントレコード 最後のレコードに向けて
FindPrevious カレントレコード 最初のレコードに向けて
●設定●
動作確認をするためには、Visual Basic Editorのメニューから[ツール]→[参照設定]コマンドを選択し、[参照設定]ダイアログボックスで「Microsoft DAO 3.6 Object Library」にチェックを入れてください。
●サンプル●
Public Sub FindAllRecordSample()
Dim myDB As Database
Dim myRS As DAO.Recordset
'カレントデータベースを変数に代入する
Set myDB = CurrentDb
'[社員テーブル]をデータソースとしてレコードセットを開く
Set myRS = myDB.OpenRecordset("社員テーブル", dbOpenDynaset)
'指定した条件を満たす最初のレコードを検索する(FindFirstメソッド)
myRS.FindFirst "部署コード=30"
Do Until myRS.NoMatch
'指定した条件を満たすレコードが存在する場合
MsgBox "***部署コード=30のレコード***" & vbCrLf & _
"社員コード : " & myRS!社員コード & vbCrLf & _
"部署コード : " & myRS!部署コード & vbCrLf & _
"名前 : " & myRS!名前 & vbCrLf & _
"職種 : " & myRS!職種 & vbCrLf & _
"入社年月日 : " & myRS!入社年月日
'指定した条件を満たす次のレコードを検索する
myRS.FindNext "部署コード=30"
Loop
MsgBox "検索が終了しました"
'レコードセットを閉じる
myRS.Close
End Sub