在使用“修改”功能中的“删除记录”功能,以“修改学籍信息”为例,如下图
在删除记录的时候,把全部的记录都删除之后会报错,如下图,出现这个错误是因为在表中查不到数据
首先介绍一下BOF与EOF,以及二者之间的区别
BOF:指当前记录位置位于Recordset对象的第一个记录之前;
EOF:指当前记录位置位于Recordset对象的最后一个记录之后。
这两个的属性值均为返回布尔型:True和False,使用BOF和EOF属性可确定Recordset对象是否包含记录,或者从一个记录移动到另一个记录时是否超出Recordset对象的限制。下表即是各自的使用说明及查询结果:
说明:
(1)如果当前记录位于第一个记录之前,BOF属性将返回True(-1),如果当前记录为第一个记录或位于其后则将返回False(0)
(2)如果当前记录位于Recordset对象的最后一个记录之后EOF属性将返回Ture,而当前记录为ecordset对象的最后一个记录或位于其前,则将返回False
(3)如果BOF或EOF属性为True,则没有当前记录
(4)如果打开没有记录的Recordset对象,BOF和EOF属性将设置为Ture,而Recordset对象的RecordCount属性设置为零。打开至少包含一条记录的Recordset对象时,第一条记录为当前记录,而BOF和EOF属性为Flase
(5)如果山区Recordset对象中保留的最后记录,BOF和EOF属性将保持False,直到重新安排当前记录
具体用法:
If objRs.BOFThen
表示:当前指针的位置是在第一行记录之前,则...
If objRs.EOFThen
表示:当前指针的位置是在最后一行记录之后,则...
If NotobjRs.EOF Then
表示:当前指针的位置没有到达最后一条记录
If NotobjRs.BOF then
表示:当前指针的位置没有到达第一条记录
推荐使用下面两条
If Not(objRs.BOF AND objRs.EOF) Then
表示:指针位于RecordSet的当中(并非是最后一条和第一条) ,说明一定有记录。
If objRs.BOFAND objRs.EOF Then
表示:没有任何记录
想要避免这个问题还有一种方法,就是在删除到最后一条的时候提示“是否删除”,删除之后再提示“数据为空,是否添加?”,代码如下:
If mrc.RecordCount = 1 Then '表中只剩一条数据
str1$ = MsgBox("这是最后一条记录,是否删除?", vbOKOnly + vbExclamation, "警告")
If str1$ = vbOK Then
mrc.Delete
MsgBox "数据为空,是否添加?", vbOKOnly + vbExclamation, "警告"
frmAddsinfo.Show '添加数据
Exit Sub
Else
Exit Sub
End If
Else
End If
这样就不会报错了,问题也就解决了
遇到问题首先要知道它是如何产生的,以及为什么产生的,这样就容易解决了