即効テクニック |
●概要● 構文 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