EOF\BOF

一:全名

EOF: End of File。
BOF: Before of File

二:含义

EOF 指示当前记录位置位于 Recordset 对象的最后一个记录之后,用于判断记录知否到末尾

BOF 指示当前记录位置位于 Recordset 对象的第一个记录之前, 用于判断记录是否在最前面

       下图是BOF .EOF指的位置                                                                                                          

                                                                                   BOF——>                                                                                                 

              记录1
              记录2
                ......
                                                                                    EOF——>

           

三:含义
EOF()是一个函数,所以它有函数值,它的函数值有两个true和false。
EOF的含义是:读取文件的指针指到文件尾时,它的值就是true(-1),还没有读到文件尾时,它的值为false(0)。
  BOF的含义: 如果当前记录位于第一个记录之前,BOF 属性将返回 True (-1),如果当前记录为第一个记录或位于其后则将返回 False (0)。
说明
1. Eof(1)它的()里的1就是参数。括号里的参数是它判断的文件的文件号。
2. if EOF(1) then  
解释:
判断如果EOF(1)的值为true则进行then后面的语句。


 EOF BOF
 True 当前行的位置是在最后一行的后面,无记录当前行的位置是在第一行之前,无记录 
 false 当前位置是在最后一行或其前面,有记录 当前位置是在第一行或其后,有记录
 说明:
     (1)EOF 或BOF值为true时,说明当前无记录
     (2)EOF,BOF同时为true时,说明记录集recordset无记录
     
四:实例化
最近在敲学生信息管理时经常用到EOF\BOF,而且经常会在带EOF\BOF代码处出现错误 3021

原因:记录集recordset中根本没记录(执行该步前没添加或都已删除),其实错误提示写的已经很清楚了
解决办法:
以学生管理为例:
1 . 加载时没记录,可添加如下代码:
If mrc.BOF Then
    str = (MsgBox("已没有可修改的记录了", vbOKOnly + vbExclamation, "提示"))
    If str = vbOK Then
          '处于不可编辑状态
            Frame1.Enabled = False
            firstCommand.Enabled = False
            previousCommand.Enabled = False
            nextCommand.Enabled = False
            lastCommand.Enabled = False


            txtSID.Enabled = False
            txtName.Enabled = False
            ComboSex.Enabled = False
            txtBorndate.Enabled = False
            ComboClassno.Enabled = False
            txtTel.Enabled = False
            txtRutedate.Enabled = False
            txtAddress.Enabled = False
            txtComment.Enabled = False


            editCommand.Enabled = False
            updateCommand.Enabled = False
            cancelCommand.Enabled = False
            deleteCommand.Enabled = False
            txtSID.Text = ""
            txtName.Text = ""
            ComboSex.Text = ""
            txtBorndate.Text = ""
            ComboClassno.Text = ""
            txtTel.Text = ""
            txtRutedate.Text = ""
            txtAddress.Text = ""
            txtComment.Text = ""
        Exit Sub
    Else
         '处于不可编辑状态
            Frame1.Enabled = False
            firstCommand.Enabled = False
            previousCommand.Enabled = False
            nextCommand.Enabled = False
            lastCommand.Enabled = False


            txtSID.Enabled = False
            txtName.Enabled = False
            ComboSex.Enabled = False
            txtBorndate.Enabled = False
            ComboClassno.Enabled = False
            txtTel.Enabled = False
            txtRutedate.Enabled = False
            txtAddress.Enabled = False
            txtComment.Enabled = False


            editCommand.Enabled = False
            updateCommand.Enabled = False
            cancelCommand.Enabled = False
            deleteCommand.Enabled = False
            txtSID.Text = ""
            txtName.Text = ""
            ComboSex.Text = ""
            txtBorndate.Text = ""
            ComboClassno.Text = ""
            txtTel.Text = ""
            txtRutedate.Text = ""
            txtAddress.Text = ""
            txtComment.Text = ""
        Exit Sub
    End If
Else
    mrc.MoveFirst
End If

2.把记录中的记录全删除,可编写代码:
If str2$ = vbOK Then
    mrc.MoveNext   '删除后显示下一条记录
    If mrc.EOF Then '分两种情况
        mrc.MovePrevious
        mrc.MovePrevious

  
        If mrc.BOF Then ’记录中有且只有一条记录,且将要删除
            mrc.MoveNext
            mrc.Delete
            MsgBox "最后一条记录已经删除!", vbOKOnly + vbExclamation, "提示"


            '处于不可编辑状态
            Frame1.Enabled = False
            firstCommand.Enabled = False
            previousCommand.Enabled = False
            nextCommand.Enabled = False
            lastCommand.Enabled = False


            txtSID.Enabled = False
            txtName.Enabled = False
            ComboSex.Enabled = False
            txtBorndate.Enabled = False
            ComboClassno.Enabled = False
            txtTel.Enabled = False
            txtRutedate.Enabled = False
            txtAddress.Enabled = False
            txtComment.Enabled = False

          editCommand.Enabled = False
            updateCommand.Enabled = False
            cancelCommand.Enabled = False
            deleteCommand.Enabled = False
            txtSID.Text = ""
            txtName.Text = ""
            ComboSex.Text = ""
            txtBorndate.Text = ""
            ComboClassno.Text = ""
            txtTel.Text = ""
            txtRutedate.Text = ""
            txtAddress.Text = ""
            txtComment.Text = ""
        Else  '有多条记录,要删除的是最后一条,删除后显示第一条
            mrc.MoveFirst
            myBookmark = mrc.Bookmark
            mrc.MoveLast
            mrc.Delete
            mrc.Bookmark = myBookmark
            Call viewData
        End If
    Else   ' 删除的记录不是最后一条,删除后显示下一条
        myBookmark = mrc.Bookmark
        mrc.MovePrevious
        mrc.Delete
        mrc.Bookmark = myBookmark
        Call viewData
     
    End If
Else   '不删除记录
    mrc.Bookmark = myBookmark '取消标记
    Call viewData
End If
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值