信息管理系统做完了,这里总结一下不是很起眼但又起着重要作用的两个属性——BOF和EOF就是如此。
BOF和EOF是Recordset(记录集)对象的一对返回值类型为布尔型的属性。
BOF指向当前记录位置位于Recordset对象的第一个记录之前;EOF指向当前记录位置位于Rocordset对象的最后一个记录之后。注意:BOF并不是指当前记录位置位于Recordset对象的第一个记录,同样EOF并不是指当前记录位于Recordset对象的最后一个记录。
下面这两段代码可以很好的说明:
正确的代码:
private sub nextCommand_Click() mrc.MoveNext 'mrc为一个记录集对象 If mrc.EOF then mrc.MoveFirst End if Call viewData 'viewData为一个在窗体上显示当前记录的函数 End sub
错误的代码:
private sub nextCommand_Click() If mrc.EOF then mrc.MoveFirst Else mrc.MoveNext 'mrc为一个记录集对象 End if Call viewData 'viewData为一个在窗体上显示当前记录的函数 End sub
这段代码实现的功能是显示下一个记录,正确的做法是先让记录下移(无论当前记录是否为最后一个),其实可以把当前记录赋予一个指针,把数据库中的记录看作成内存地址,当下移后的指针指向最后一个地址块之后时(即下移后,记录如果指向最后一个记录之后),EOF的返回值为True。
为了理解更明了一些,画了一张图(如右图)来解释EOF和BOF,假设记录集中一共有n条记录,当当前记录指针指向第一条记录之前时,BOF属性值为True;当前记录指向中间1~n任意一条记录时,BOF和EOF属性值
都为False;当前记录指向最后一条记录之后时,EOF
属性值为True。
当然,EOF和BOF合起来也可以实现一些功能,比如:
当判断语句BOF And EOF时,如果结果为True即它们倆的返回值都为True时则表明当前记录集中没有任何记录;而当记录中只有一个记录并处于该记录位置时,BOF和EOF的返回值都为False。