CDaoRecordset::IsBOF
更新 : 2007 年 11 月
レコードセットの先頭レコードより前に位置しているかどうかを調べるために、レコードからレコードにスクロールする前に呼び出します。
BOOL IsBOF( ) const;
戻り値
レコードセットにレコードが存在しない場合、または先頭レコードより前にスクロールした場合は 0 以外の値を返します。それ以外の場合は 0 を返します。
解説
IsBOF と共に IsEOF を呼び出して、レコードセット内にレコードがあるかどうかを調べることもできます。Open 関数を呼び出したすぐ後に、レコードセットにレコードが存在していない場合、IsBOF 関数は 0 以外の値を返します。開いたレコードセットに少なくとも 1 つのレコードあると、最初のレコードが現在のレコードになり、IsBOF は 0 を返します。
先頭レコードが現在のレコードの場合に、MovePrev 関数が呼び出されると、IsBOF 関数は 0 以外の値を返します。IsBOF が 0 以外を返し、MovePrev を呼び出すと、例外がスローされます。IsBOF が 0 以外を返すと、現在のレコードは不定になり、現在のレコードを必要とする操作ではすべて、例外が発生します。
IsBOF および IsEOF の設定の特定のメソッドの影響は次のとおりです。
Open の内部的呼び出しは MoveFirst を呼び出すことにより、レコードセットの先頭レコードを現在のレコードにします。そのため、空のレコードセットで Open を呼び出すと、IsBOF および IsEOF は 0 以外を返します。MoveFirst または MoveLast の呼び出しが失敗したときの動作については、下の表を参照してください。
レコードの位置付けに成功したすべての移動操作では、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 |
Allowed |
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