前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >探秘BOF 和EOF

探秘BOF 和EOF

作者头像
DannyHoo
发布2018-09-13 11:18:19
9060
发布2018-09-13 11:18:19
举报
文章被收录于专栏:Danny的专栏Danny的专栏

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1336825

       学生信息管理系统敲完了,之前刚接触数据库时,仅仅出现的新名词就能把你脑子搅得跟浆糊一样。经过红皮书和学生信息管理系统的洗礼,与前几个月刚接触数据库时相比,对它涉及到的知识的理解深刻了许多,其中不是很起眼但又起着重要作用的两个属性——BOF和EOF就是如此。

       与它们的第一次谋面是在敲红皮书的时候,但当时对其用法理解扭曲,也没有重视,直到在学生信息管理系统的过程中才发现它倆的重要性。

BOF和EOF是Recordset(记录集)对象的一对返回值类型为布尔型的属性。

BOF指向当前记录位置位于Recordset对象的第一个记录之前;EOF指向当前记录位置位于Rocordset对象的最后一个记录之后。**注意**:BOF并不是指当前记录位置位于Recordset对象的第一个记录,同样EOF并不是指当前记录位于Recordset对象的最后一个记录。

     下面这两段代码可以很好的说明:

正确的代码:

代码语言:javascript
复制
private sub nextCommand_Click()
      mrc.MoveNext     'mrc为一个记录集对象
      If mrc.EOF then
            mrc.MoveFirst
      End if
      Call viewData    'viewData为一个在窗体上显示当前记录的函数
End sub

错误的代码:

代码语言:javascript
复制
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。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013年07月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档