一、错误描述
在做学生信息管理系统的时候运行以后碰到过这样的错误:“实时错误’3021’,BOF或EOF中有一个是“真“,或者当前的记录已被删除,所需的操作要求一个当前的记录。”
二、错误在什么时候出现?
这个错误一般是出现的情况是在:当系统中还没有添加任何信息的时候,去点击修改信息的时候。(例如:没有添加任何的学籍信息,而且系统之前也没有任何的学籍信息,这个时候去点修改学籍信息,就回出现这种情况)
三、错误出现的原因
在网上查过原因,也通过自己对代码的阅读发现,出现这种情况的原因是:因为需要查询的表在数据库中没有任何的数据。
源代码(以修改学籍的代码为例):
Private SubForm_Load() ‘运行修改学籍窗体
Dim txtSQL AsString
Dim MsgText As String
txtSQL = "select * from student_Info"
Set mrc = ExecuteSQL(txtSQL, MsgText) '得到student表,并显示出来
'select得到的临时表,游标指向尾记录,在Access中指向第一条
mrc.MoveFirst
Call viewData
mcbookmark = mrc.Bookmark '做标记
mcclean= True
End Sub
四、解决办法
1.添加错误处理
Private Sub Form_Load() ‘运行修改学籍窗体
Dim txtSQL As String
Dim MsgText As String
txtSQL = "select * from student_Info"
Set mrc = ExecuteSQL(txtSQL, MsgText) '得到student表,并显示出来
On Error GoTo dateErr '如果有错误直接执行dateErr那一步
mrc.MoveFirst '
Call viewData
myBookmark = mrc.Bookmark
mcclean = True
dateErr:
If Err =3021 Then
MsgBox"没有数据"
End If
end sub
2.添加判断,判断数据中是否有需要查询的表中数据
Private Sub Form_Load()‘运行修改学籍窗体
Dim txtSQL As String
Dim MsgText As String
Dim str1 As String '自己加的
'得到student表
txtSQL = "select * fromstudent_Info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = False Then ‘先判断是否还有记录,如果还有记录
mrc.MoveFirst
Call viewData
myBookmark = mrc.Bookmark
mcclean=True
Else ‘如果没有记录
str1 =MsgBox("没有学籍信息,是否添加学籍信息?", vbOKCancel, "提示")
If str1 = vbOK Then ‘点击确定
unload frmModifysinfo ‘当前窗体卸载
frmAddsinfo.Show ‘添加学籍窗体运行
Else ‘点击取消
Unload frmModifysinfo ‘当前窗体卸载
End If
End If
End Sub