CDaoRecordset::IsEOF
更新 : 2007 年 11 月
レコードからレコードにスクロールするときに、レコードセットの最終レコードを越えているかどうかを調べます。
BOOL IsEOF( ) const;
戻り値
レコードセットにレコードが存在しない場合、または最終レコードより後にスクロールした場合は 0 以外の値を返します。それ以外の場合は 0 を返します。
解説
IsEOF を呼び出してレコードセットにレコードがあるかどうかを調べることもできます。Open 関数を呼び出したすぐ後に、レコードセットにレコードが存在していない場合、IsEOF 関数は 0 以外の値を返します。開いたレコードセットに少なくとも 1 つのレコードあると、最初のレコードが現在のレコードになり、IsEOF は 0 を返します。
最終レコードが現在のレコードの場合に、MoveNext 関数が呼び出されると、IsEOF 関数は 0 以外の値を返します。IsEOF が 0 以外を返し、MoveNext を呼び出すと、例外がスローされます。IsEOF が 0 以外を返すと、現在のレコードは不定になり、現在のレコードを必要とする操作ではすべて、例外が発生します。
IsBOF および IsEOF の設定の特定のメソッドの影響は次のとおりです。
Open の内部的呼び出しは MoveFirst を呼び出すことにより、レコードセットの先頭レコードを現在のレコードにします。そのため、空のレコードセットで Open を呼び出すと、IsBOF および IsEOF は 0 以外を返します。MoveFirst の呼び出しが失敗したときの動作については、下の表を参照してください。
レコードの位置付けに成功したすべての移動操作では、IsBOF および IsEOF のどちらも 0 を返します。
AddNew の呼び出しに続く Update の呼び出しで新しいレコードの挿入に成功すると、IsEOF が既に 0 以外であるときにだけ、IsBOF は 0 を返します。IsEOF の状態は、常に一定です。Microsoft Jet データベース エンジンで定義されているように、空のレコードセットの現在のレコード ポインタは、ファイル終端にあるので、新しいレコードは、常に現在のレコードの後に挿入されます。
レコードセットから最後の 1 つのレコードを削除する場合でも、Delete の呼び出しによって IsBOF または IsEOF の値が変更されることはありません。
次の表は、IsBOF と IsEOF の異なる組み合わせでどの移動操作が可能であるかを示しています。
|
MoveFirst、MoveLast |
MovePrev、 Move < 0 |
Move 0 |
MoveNext、 Move > 0 |
---|---|---|---|---|
IsBOF=0 以外 IsEOF=0 |
Allowed |
Exception |
Exception |
可能 |
IsBOF=0, IsEOF=0 以外 |
Allowed |
Allowed |
Exception |
Exception |
両方 0 以外 |
Exception |
Exception |
Exception |
Exception |
両方 0 |
Allowed |
Allowed |
Allowed |
Allowed |
移動操作が可能であっても、その操作がレコードの位置付けに成功するとは限りません。特定の移動操作を実行でき、例外を発生させないことを単に示しているだけです。移動操作を試行した結果、IsBOF と IsEOF メンバ関数の値が変化することがあります。
移動操作を行った結果、レコードの場所が特定できない場合に、IsBOF および IsEOF が返す値を次の表に示します。
|
IsBOF |
IsEOF |
---|---|---|
MoveFirst、MoveLast |
0 以外 |
0 以外 |
Move 0 |
変更なし |
変更なし |
MovePrev、Move < 0 |
0 以外 |
変更なし |
MoveNext、Move > 0 |
変更なし |
0 以外 |
関連情報については、DAO ヘルプの「BOF, EOF Properties」を参照してください。
必要条件
ヘッダー : afxdao.h