CDaoRecordset::IsBOF

BOOL IsBOF() const;
  throw(CDaoException, CMemoryException);

返回值:
记录集不包含记录,或者在第一条记录之前向前滚动时返回非零值,否则为0。

说明:
在记录间滚动之前,调用这个成员函数,可以确定是否走到记录集的第一条记录之前。还可以和IsEOF一起调用IsBOF,用来确定记录集中有无记录。如果记录集不包含记录,则调用Open之后IsEOF立即返回非零。打开至少有一条记录的记录集时,第一条记录成为当前记录并且IsBOF返回0。
如果第一条记录是当前记录并且调用了MovePrev,接下来的IsBOF返回非零。如果IsBOF返回非零并且调用了MovePrev,则产生一个异常。如果IsBOF返回非零,则未定义当前记录,并且查询当前记录的任何动作将返回一个异常。
某些方法对IsBOF和IsEOF设置的效果:
·通过调用MoveFirst,内部调用Open使记录集中第一条记录成为当前记录。因此在空记录集上调用Open将导致IsBOF和IsEOF返回非零(请参阅下表,它是关于失败的MoveFirst或MoveLast调用行为的)。
·所有成功定位记录的Move操作导致IsBOF和IsEOF返回0。
·由Update紧跟其后的AddNew成功地插入一条新记录,将导致IsBOF返回0,但除非IsEOF已经非零,IsEOF的状态将总是保持不变。与Microsoft Jet数据库引擎定义的相同,空记录集的当前记录指行位于文件末尾,因此在当前记录后插入新记录。
·任何Delete调用,即使它从记录集中移去唯一剩余的记录,都不会改变IsBOF或IsEOF的值。
这个表表示不同的IsBOF/IsEOF组合所允许的Move操作:
 
MoveFirst,MoveLast
MovePrev,Move < 0
Move 0
MoveNext,Move > 0
IsBOF=非零,IsEOF=0
允许
异常
异常
允许
IsBOF=0,IsEOF=非零
允许
允许
异常
异常
都为非零
异常
异常
异常
异常
都为零
允许
允许
允许
允许
允许Move操作并非表示这个操作将成功定位一条记录。它只表示允许试着执行指定Move操作,并且不会产生异常。IsBOF和IsEOF成员函数的值可能随试图移动的结果变化。
不定位记录的Move操作对IsBOF和IsEOF值的作用如下表所示:
 IsBOFIsEOF
MoveFirst,MoveLast非零非零
Move 0不变不变
MovePrev,Move<0非零不变
MoveNext,Move>0不变非零
有关记录集中导航的更多信息,请参阅联机文档“Visual C++程序员指南”中的“DAO记录集:记录集导航”。有关信息,请参阅DAO帮助中的“BOF,EOF特性”。

请参阅:CDaoRecordset::IsEOF