注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

王朋波 廊坊师范学院信息技术提高班十一期

坚持,坚持,没有什么可以将自己打败的。加油……

 
 
 

日志

 
 

引用 【转载】EOF和BOF的理解   

2014-06-13 16:31:30|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本文转载自谭倩倩《【转载】EOF和BOF的理解》

 刚刚在敲数据库例子的时候,遇到了一个错误:实时错误'3021' “BOF和EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前记录”。其实这个错误也是之前敲数据库的代码时非常常见的一个错误,只不过当时看不大懂,然后再照着例子里面的代码纠正过来,然后就对了,以前也百度过,但看不大懂,只知道BOF跟“第一个”有关,EOF跟“最后一个”有关,而今晚通过一个小小的错误,我突然明白这其中的意思。

 

Private Sub previousCommand_Click()
    If mrc.BOF Then
        mrc.MoveLast

    else

    mrc.MovePrevious
    End If
    Call viewData
End Sub


Public Sub viewData()
    txtClassno.Text = mrc.Fields(0)
    comboGrade.Text = mrc.Fields(1)
    txtDirector.Text = mrc.Fields(2)
    txtClassroom.Text = mrc.Fields(3)
    
End Sub

一开始我没看例子敲,就按着自己想的去敲,上面的代码中command过程是错误的,viewdata()是正确的,运行后当我单击按钮,错误的那个黄条是在viewdata()的第一行,然后我退出看了看正确的代码:

Private Sub previousCommand_Click()
    mrc.MovePrevious
    If mrc.BOF Then
        mrc.MoveLast
    End If
    Call viewData
End Sub

我便突然明白了BOF的意思,其实BOF是指向表中的第一行的空白行,尽管表中第一行没有空白的,但是你可以主观认为它存在一个你看不到的第一行,并且是空白的,因为程序一开始运行的时候记录是在第一条,当moveprevious之后就成为了BOF,即指向了第一行空白区域,程序运行到了viewdata()的第一行时mrc.Fields(0)里面什么都没有,所以赋值的时候报错了,确实错误中描述的很对“BOF或EOF中有一个是“真””,而同样的可以把EOF看做是指向了最后一行数据的下一行-空白行,如果这个时候你还赋值,那可定会报错,因为这是空的,什么都没有。所以对BOF和EOF的处理是:当发生这两个事件的时候,可以把当前记录转移到一个飞空区域,然后赋值或者干别的,就不会出现那样的错误了。看,上面正确的代码里,即将发生BOF事件后第一时间将当前记录转移到最后一条数据区域即可避免错误的发生。

  评论这张
 
阅读(24)| 评论(10)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017