关于BOF和 EOF

浏览RecordSet中的记录需要两步:1.定位当前的记录,RecordSet打开的第一个记录为当前记录;2.用Field对象获得当前记录的各个数据列。

RecordSet对象可用下列5种方法定位到当前记录:


MoveFirst:使当前指针指向第一个记录;

MoveNext:使当前指针指向下一个记录;

MovePrevious:使记录指针指向前一个记录;

MoveLast:使记录指针指向最后一个记录;

Move n:使记录指针指向当前记录算起的第n个记录。


RecordSet的两个属性:

Bof——before of file

Eofend of file


以上两个属性返回布尔型:


Bof
Eof
true当前行的位置是在第一行之前,无记录
当前行的位置是在最后一行的后面,无记录
false当前位置是在第一行或其后,有记录当前行的位置是在最后一行或其前面,有记录


这两个属性和记录定位方法结合即可浏览recordset中的所有记录:



MoveFirst&
MoveLast
MovePrevious,
move<0
move 0MoveNext,
move>0
bof=true & eof=false允许 错误错误允许
bof=false & eof=true允许允许错误错误
同时为true错误错误错误错误
同时为false允许允许允许允许


1.If objRs.BOF Then

表示:当前指针的位置是在第一行记录之前,则...

2.If objRs.EOF Then

表示:当前指针的位置是在最后一行记录之后,则...

3.If Not objRs.EOF Then

表示:当前指针的位置没有到达最后一条记录

4.If Not objRs.BOF then

表示:当前指针的位置没有到达第一条记录

5.If Not (objRs.BOF AND objRs.EOF) Then

表示:指针位于RecordSet 的当中(并非是最后一条和第一条) ,说明一定有记录。

6.If objRs.BOF AND objRs.EOF Then

表示:没有任何记录


当Bof或Eof中有一个是“真”,或者当前的记录已被删除的情况下,会产生实时错误3021,在学生信息管理系统中,我们应该都遇到这个问题,下面分享一下我解决这个问题的方法。
Private Sub Form_Activate()    '改进form-load事件,在窗体未显示之前,判断有无记录,
                               '若无记录则修改窗体的功能不能执行,没必要显示,跳转到添加信息
     Dim txtSQL As String
     Dim msgtext As String
     Dim msgvalue As Integer
    
     txtClassno.Enabled = False
     comboGrade.Enabled = False
     txtDirector.Enabled = False
     txtClassroom.Enabled = False
    
     txtSQL = "select * from class_Info "
     Set mrc = ExecuteSQL(txtSQL, msgtext)
    
      If mrc.EOF And mrc.BOF Then         '无记录时mrc.EOF=true和mrc.BOF=true同时满足
          
          msgvalue = MsgBox("当前无记录!您是否添加班级信息?", 4 + 32 + 256, "温馨提示")

          If msgvalue = 6 Then   '选择是,直接跳转到添加信息
              Unload frmModifyclassinfo
              Load frmAddclassinfo
              frmAddclassinfo.Show
          Else                   '选择否,因为没有记录,不必显示修改窗口
               Unload frmModifyclassinfo
          End If
     Else                        '有记录的情况,显示第一条记录
          mrc.MoveFirst
          Call viewData
          myBookmark = mrc.Bookmark
          mcclean = True
     End If
End Sub




                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值