学生知识点总结之三(EOF与BOF)
来源:互联网 发布:osx和linux 编辑:程序博客网 时间:2024/06/05 21:12
在进行学生的过程中,EOF我们见到很多次,我遇到一个实时错误‘3021’,还是通过将EOF改为BOF 来解决的,那EOF与BOF到底是什么呢?
一.认识EOF与BOF
1.BOF(Before of File)指当前记录位置位于Recordset对象的第一个记录之前。
2.EOF(End of File)指当前记录位置位于Recordset对象的最后一个记录之后。
【附:
1.Recordset对象。使用 ADO时,通过 Recordset对象可对几乎所有数据进行操作。所有 Recordset(行) 和字段(列)进行构造。由于提供者所支持的功能不同,某些 Recordset方法或属性有可能无效。
2.ADO Recordset 对象用于容纳一个来自数据库表的记录集。一个 Recordset对象由记录和列(字段)组成。
在 ADO中,此对象是最重要且最常用于对数据库的数据进行操作的对象。】二.使用EOF与BOF
这两个的属性值均返回布尔型:True和False,使用BOF和 EOF 属性可确定 Recordset 对象是否包含记录,或者从一个记录移动到另一个记录时是否超出 Recordset 对象的限制。
下表即是各自的使用说明及查询结果:
EOF
BOF
True
当前行的位置是在最后一行的后面,无记录
当前行的位置是在第一行之前,无记录
False
当前行的位置是在最后一行或其前面,有记录
当前位置是在第一行或其后,有记录
说明:
(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,直到重新安排当前记录。
而在我们的学生信息管理系统中,会涉及到对指针进行的MoveFirst、MoveLast、MovePrevious与MoveNext四种方法。一般来说,当需要对记录集Recordset中的所有行进行操作时,代码可以使用MoveNext,循环遍各行,直到EOF属性被置为True。
如果当 EOF 被置为 True 时再使用 MoveNext ,或当 BOF被置为 True 时再使用 MovePrevious ,都将产生一个提示代号为‘3021’的错误。
需要注意的是:允许一个Move方法并非意味着,该方法能成功地定位某行。它仅表示执行这个指定的 Move 方法是允许的,并且不产生一个错误。 BOF 和 EOF属性的状态可以随着该移动的结果而改变。
三.EOF与BOF的通常使用
通常我们在程序中编写代码来检验BOF与EOF属性,从而得知目前指标所指向的RecordSet的位置,使用BOF与EOF属性,可以得知一个Recordset对象是否包含有记录或者得知移动记录行是否已经超出该Recordset对象的范围。
若当前记录的位置是在一个Recordset对象第一行记录之前时,BOF属性返回true,反之则返回false。
若当前记录的位置是在一个Recordset对象最后一行记录之后时,EOF属性返回true,反之则返回false。
(BOF与EOF都为True表示在RecordSet里没有任何记录。)
If mrc.EOF Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
End If
这是通常的用法。意思是说如果游标到达最后一行没有找到数据的话,那么就弹出不存在的对话框。
四.EOF与BOF的具体用法
表示:当前指针的位置是在第一行记录之前,则...
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
表示:没有任何记录
五.
以下表格说明不同 BOF 和 EOF 属性组合所允许的 Move 方法
MoveLastMovePrevious,
Move < 0Move 0MoveNext,
Move > 0BOF=True,
EOF=False允许错误错误允许BOF=False,
EOF=True允许允许错误错误同时为True错误错误错误错误同时为 False允许允许允许允许
允许使用 Move 方法并不能保证该方法成功定位记录,只是意味着调用指定的 Move 方法不会产生错误。
下表说明当调用各种 Move 方法但未成功定位记录时 BOF和 EOF 属性设置所发生的情况
BOFEOFMoveFirst, MoveLast设置为 True设置为 TrueMove 0没有变化没有变化MovePrevious, Move < 0设置为 True没有变化MoveNext, Move > 0没有变化设置为 True- 学生知识点总结之三(EOF与BOF)
- EOF 与 BOF 之分
- 学生信息管理系统之------BOF、EOF大用处
- 学生信息管理系统之分析Eof和BOF
- EOF与BOF
- 红皮书--EOF与BOF
- BOF与EOF
- 数据库学习总结--错误‘3021’关于BOF与EOF
- 【学生管理系统】EOF和BOF
- 【学生信息管理系统】BOF和EOF
- 【学生信息管理系统】EOF 和 BOF
- 【ADO】浅识“EOF与BOF”
- 指南针之BOF和EOF
- EOF BOF
- Bof Eof
- EOF\BOF
- 关于ASP中eof与bof
- 【学生信息管理系统】实时错误'3021' BOF EOF
- iOS 微信支付和支付宝支付
- [iOS]Mac下获取App Store安装包路径
- 10个JavaScript测试
- UI高级--------NSRunLoop
- 第三章 3.5.5 与旧代码的接口
- 学生知识点总结之三(EOF与BOF)
- 009:How can I test if an array contains a certain value?
- 一个简单线程池的实现
- 数据结构实验之二叉树的建立与遍历
- RBAC权限管理
- js的预解析
- hdu 1045 二分匹配练习 重在转化啊!!
- jquery 笔记之简介
- 动态广播和静态广播的区别