Recordset2.FindLast メソッド (DAO)

適用先: Access 2013、Office 2013

ダイナセット タイプまたはスナップショット タイプの Recordset オブジェクトで、指定された条件を満たす最後のレコードを検索し、そのレコードをカレント レコードにします (Microsoft Access ワークスペースのみ)。

構文

。FindLast(Criteria)

Recordset2 オブジェクトを表す変数。

パラメーター

名前

必須かどうか

データ型

説明

基準

必須

String

レコードの検索に使用する文字列です。 SQL ステートメントの WHERE 句に似ていますが、WHERE という語は付けません。

注釈

特定の条件を満たすレコードだけでなく、すべてのレコードを検索対象とする場合は、 Move メソッドを使用してレコード間を移動します。 テーブル タイプの Recordset でレコードを検索するには、 Seek メソッドを使用します。

条件を満たすレコードが検出されない場合、カレント レコードを参照するポインターは不明となり、 NoMatch プロパティが True に設定されます。 recordset に条件を満たすレコードが複数含まれている場合の検出対象は、 FindFirst では最初に出現したもの、 FindNext では次に出現したもの、などとなります。

次の表に、各 Find メソッドの検索開始位置と検索方向を示します。

Find メソッド

検索開始位置

検索方向

FindFirst

レコードセットの先頭

レコードセットの末尾

FindLast

レコードセットの末尾

レコードセットの先頭

FindNext

現在のレコード

レコードセットの末尾

FindPrevious

カレント レコード

レコードセットの先頭

Recordset の末尾までデータが格納されていない状態で FindLast メソッドを使用すると、検索が始まる前に、Microsoft Access データベースによってレコードセットが末尾まで埋められます。

ただし、いずれかの Find メソッドを使用した場合と、 Move メソッドを使用した場合の結果は同じではなく、後者は、条件を指定せずに、最初のレコード、最後のレコード、次のレコード、または前のレコードをカレント レコードにするだけです。 Find 操作の後に Move 操作を使用する場合もあります。

NoMatch プロパティの値を必ず確認して、Find 操作が成功したかどうか調べてください。 検索が成功した場合、 NoMatchFalse です。 失敗した場合、 NoMatchTrue で、カレント レコードは未定義となります。 この場合は、カレント レコードを参照するポインターを有効なレコードに戻す必要があります。

Find メソッドを Microsoft Access データベース エンジンに接続された ODBC アクセスのレコードセットで使用すると、効率が悪い場合があります。 特に大きなレコードセットを操作するときは、criteria の表現を変更すると、より迅速に特定のレコードを検出できる場合があります。

Microsoft Access データベース エンジンに接続している ODBC データベースでダイナセット タイプの大きな Recordset オブジェクトを操作している場合、 Find メソッド、 Sort プロパティ、または Filter プロパティを使用すると、処理速度が遅いことがあります。 To improve performance, use SQL queries with customized ORDER BY or WHERE clauses, parameter queries, or QueryDef objects that retrieve specific indexed records.

日本語版の Microsoft Access データベース エンジンを使用する場合であっても、日付が格納されたフィールドを検索するときは米国の日付形式 (month-day-year) を使用することが推奨され、使用しないとデータが検出されないことがあります。 Visual Basic の Format 関数を使用して、日付を変換してください。 例:

rstEmployees.FindFirst "HireDate > #" _ 
        & Format(mydate, 'm-d-yy' ) & "#" 

注:

抽出条件が文字列と非整数値を連結したもので構成され、かつシステム パラメーターでコンマなどのピリオド以外の小数点の記号が使用されている場合 (たとえば、strSQL = "PRICE > " & lngPrice と lngPrice = 125,50)、メソッドを呼び出そうとするとエラーが発生します。 連結時に数値がシステムの既定の小数点の記号を使って文字列に変換されますが、Microsoft Access の SQL で小数点の記号として使用できるのはピリオドのみであるためです。

注:

  • 最適なパフォーマンスを得るには、条件* は、フィールドが基になるベース テーブルのインデックス付きフィールドである "フィールド = " 形式か、フィールドが基になるベース テーブルのインデックス付きフィールドであり、プレフィックスがプレフィックス検索文字列 ("ART*" など) である "フィールド LIKE プレフィックス" のいずれかである必要があります。
  • 一般に、同じような検索を行う場合は、 Find メソッドよりも Seek メソッドを使用する方がパフォーマンスが優れています。 ただし、これを使用できるのは、テーブル タイプの Recordset オブジェクトだけを検索対象とする場合です。