CDaoRecordset::FindFirst
指定された条件に一致する最初のレコードを検索します。
BOOL FindFirst(
LPCTSTR lpszFilter
);
パラメーター
- lpszFilter
レコードの位置検索に使われる文字列式 (SQL ステートメントの WHERE 句から WHERE を除いた部分に当たるようなもの)。
戻り値
一致するレコードが見つかった場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
FindFirst メンバー関数は、レコードセットの先頭から、レコードセットの末尾に向かって検索を開始します。
検索で、(指定した条件に合うものだけでなく) すべてのレコードを含めたいときは、レコード間を移動する移動操作の 1 つを使います。 テーブル タイプのレコードセットのレコードを位置付けるには、Seek メンバー関数を呼び出します。
条件に一致するレコードが見つからないと、現在のレコードのポインターは不定となり、FindFirst は 0 を返します。 レコードセットが条件に一致するレコードを 1 つ以上持っていると、FindFirst は最初のものを、FindNext は次のものを、以下同じように位置付けます。
ヒント
現在のレコードを編集したときは、他のレコードに移動する前に Update メンバー関数を呼び出して、変更を必ず保存するようにします。 更新せずにほかのレコードに移動すると、変更は警告なしで失われます。
Find メンバー関数は、次の表で示された位置から、示された方向へ検索します。
検索操作 |
開始位置 |
検索方向 |
---|---|---|
FindFirst |
レコードセットの先頭 |
レコードセットの末尾 |
FindLast |
レコードセットの末尾 |
レコードセットの先頭 |
FindNext |
現在のレコード |
レコードセットの末尾 |
FindPrevious |
現在のレコード |
レコードセットの先頭 |
注意
FindLast を呼び出すときに、レコードセットにすべてのレコードが読み込まれていない場合は、Microsoft Jet データベース エンジンが検索を開始する前にすべてのレコードを読み込みます。 そのため、最初の検索時には、以降の検索時よりも、時間がかかることがあります。
検索操作の 1 つを使うことは、MoveFirst または MoveNext の呼び出しと同じではありません。この 2 つの関数は、条件を指定せずに、単純に現在のレコードを先頭または次のレコードに移動します。 移動操作の後に検索操作ができます。
検索操作を使うときは、次のことに注意してください。
Find が 0 以外を返すと、現在のレコードは不定となります。 この場合、現在のレコードが有効なレコードを指すように、位置付ける必要があります。
前方スクロール専用のスナップショット タイプのレコードセットでは検索操作は使えません。
Microsoft Jet データベース エンジンの U.S. バージョンを 使っていなくても、日付を持つフィールドを検索するときは、U.S. 日付形式 (month-day-year) を使うようにします。 それ以外では、一致するレコードを検索できない場合があります。
ODBC データベースで大きなダイナセットを処理しているときに検索操作を実行すると、特にレコードセットが大きい場合は処理速度が低下します。 カスタマイズされた ORDER BY 句または WHERE 句を使った SQL クエリ、パラメーター クエリ、または特定のインデックスされたレコードを取り出す CDaoQuerydef を使うことにより、パフォーマンスを向上させることができます。
関連情報については、DAO ヘルプの「FindFirst, FindLast, FindNext, FindPrevious Methods」を参照してください。
必要条件
**ヘッダー:**afxdao.h