在学生信息管理系统和机房收费系统中,我们经常遇见这样的情况。
出现错误的原因是什么,就是我们对于数据查询的临时记录出现了问题,系统需要数据,可这时候他可能找不到数据了,就会出现这样的问题
BOF和 EOF又是我们在调用数据库时常用到的,所以自己就把这些总结了一下,给自己留下一个提示。
根据图来看,可以便于我们理解
使用ADO连接数据库进行查询的时候,数据库将查询结果返回查询端,在查询端的内存里面就会有一个列表,这个列表存放的就是查询的结果。这个内存中的列表就是数据集。在你的程序里面Recordset就是表示这个数据集,如图就是我们虚拟的数据集
BOF:指当前记录位置位于Recordset对象的第一个记录之前;
EOF:指当前记录位置位于Recordset对象的最后一个记录之后。
这两个的属性值均返回布尔型:True和False,使用BOF和 EOF 属性可确定Recordset对象是否包含记录,或者从一个记录移动到另一个记录时是否超出Recordset对象的限制。下表即是各自的使用说明及查询结果:
说明:
(1)如果当前记录位于第一个记录之前,BOF属性将返回True(-1),如果当前记录为第一个记录或位于其后则将返回False (0)。
(2)如果当前记录位于Recordset对象的最后一个记录之后EOF属性将返回True,而当前记录为Recordset对象的最后一个记录或位于其前,则将返回False。
(3)如果
BOF 或EOF 属性为True,则没有当前记录。
(4)如果打开没有记录的
Recordset 对象,BOF和 EOF属性将设置为True,而Recordset对象的RecordCount属性设置为零。打开至少包含一条记录的Recordset对象时,第一条记录为当前记录,而BOF和 EOF属性为 False。
(5)如果删除
Recordset 对象中保留的最后记录,BOF和 EOF属性将保持 False,直到重新安排当前记录。
具体用法:
If objRs.BOF Then
表示:当前指针的位置是在第一行记录之前,则...
If objRs.EOF Then
表示:当前指针的位置是在最后一行记录之后,则...
If Not objRs.EOF Then
表示:当前指针的位置没有到达最后一条记录
If Not objRs.BOF then
表示:当前指针的位置没有到达第一条记录
推荐使用下面两条
If Not (objRs.BOF AND objRs.EOF) Then
表示:指针位于RecordSet的当中(并非是最后一条和第一条),说明一定有记录。
If objRs.BOF AND objRs.EOF Then
表示:没有任何记录