这个错误算是发生最多的一个了。
其一:是在打开修改XX信息的窗体时都会遇见的错误,经网上查询得知是因为,Recordset里没有数据的原因,当首先添加一组信息后,就可以打开修改修改了,但这并没有解决根本问题。我是这样修改的:写一组判断语句加frmMain的菜单项单击事件中。
Private Sub modifycinfoMenu_Click()
txtSQL = "select * from class_Info"
Set mrc = ExecuteSQL(txtSQL, MsgText) '得到class表,并显示
'判断记录是否为空,如果为空弹出提示框,确认后弹出添加信息窗体
If mrc.RecordCount = 0 Then
MsgBox "记录为空,请先添加!", vbOKOnly + vbExclamation, "警告"
mrc.Close
Set mrc = Nothing
frmAddclassinfo.Show
Exit Sub
Else
frmModifyclassinfo.Show
End If
End Sub
Private Sub modifycourseMenu_Click()
txtSQL = "select * from course_Info"
Set mrc = ExecuteSQL(txtSQL, MsgText) '得到course表,并显示
'判断记录是否为空,
If mrc.RecordCount = 0 Then
MsgBox "记录为空,请先添加!", vbOKOnly + vbExclamation, "警告"
mrc.Close
Set mrc = Nothing
frmAddcourseinfo.Show
Exit Sub
Else
frmModifycourseinfo.Show
End If
End Sub
其它几个做类似修改即可。
其二:是在删除数据的时候,删除两条以上的记录时不会出现错误,但在删除最后一条记录时便会发生错误。
法1、利用错误处理语句,(前提:虽然点击删除按钮后出错,但是重新打开时记录已经被删除了)
Private Sub deleteCommand_Click()
On Error GoTo d_Err
myBookmark = mrc.Bookmark '做标记
str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")
If str2$ = vbOK Then
.
.
.
End If
d_EXIT:
Exit Sub
Unload Me
d_Err:
txtSID.Text = "" ’把各文本框清空(可选)
txtName.Text = ""
.
.
.
MsgBox "记录为空了。", vbOKOnly + vbExclamation, "警告"
GoTo d_EXIT
End Sub
法2、编写判断语句判断是否为最后一条记录。
Private Sub deleteCommand_Click()
myBookmark = mrc.Bookmark
str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")
If str2$ = vbOK Then
mrc.MoveNext
’判断是否为最后一条记录
If mrc.EOF Then
mrc.MovePrevious
mrc.MovePrevious
If mrc.BOF Then ’若是 则删除,避免执行语句call viewdata
mrc.MoveNext
mrc.Delete
MsgBox "记录已经为空,,", vbOKOnly + vbExclamation, "警告"
Unload Me
Else
mrc.MoveFirst
myBookmark = mrc.Bookmark
mrc.MoveLast
mrc.Delete
mrc.Bookmark = myBookmark
mrc.Close
txtSQL = "select * from class_Info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
mrc.MoveLast
Call viewData
End If
Else
myBookmark = mrc.Bookmark
mrc.MovePrevious
mrc.Delete
mrc.Bookmark = myBookmark
mrc.Close
txtSQL = "select * from class_Info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
mrc.MoveLast
Call viewData
End If
Else
mrc.Bookmark = myBookmark
Call viewData
End If
End Sub
其它窗体里面的删除按钮代码做类似修改即可。