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事件后第一时间将当前记录转移到最后一条数据区域即可避免错误的发生。

        又是一个夜晚,感觉少了很多东西,推开窗户,原来那一直有棵树,但却不见那风儿,一直以为自己触摸到了很多东西,殊不知已经错过了太多美丽。打开心门的那扇窗,让每个夜晚都不会寂寞,昨天晚上的梦,今晚只想说:待续。躺也!躺也!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值