最近在敲学生管理系统,遇见最多也是最大的一个问题就是:
遇见这个问题的有两个原因:第一:当你还未添加任何记录的时候,就要试图去修改记录,就会出现上面的那条错误提示。
解决方案:第一:你先记得添加一条记录,但是这不是解决的根本办法,所以我们就采取第二个解决方案。
第二:在启动窗体中把原先的代码:
Private Sub modifycourseMenu_Click()
frmModifycourseinfo.Show
End Sub
改为:
Private Sub modifycourseMenu_Click()
txtSQL = "select * from course_info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.RecordCount = 0 Then
MsgBox "课程信息不存在,请稍后补充!", vbOKOnly + vbExclamation, "警告"
mrc.Close
Set mrc = Nothing
frmAddcourseinfo.Show
Exit Sub
Else
frmModifycourseinfo.Show
End If
End Sub
这样改是比较完善的了,因为当没有记录却点击修改记录的时候,就会弹出“课程信息不存在请稍候补充”的警告框,然后接下来它就会弹出来添加记录窗体,符合人类的正常思维!
遇见这个问题的第二个原因:当你修改记录时,点击删除按钮,删除到最后一个,也会出现这类问题。源代码为:
Private Sub deleteCommand_Click()
myBookmark = mrc.Bookmark
str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")
If str2$ = vbOK Then
mrc.MoveNext
If mrc.EOF Then
mrc.MoveFirst
myBookmark = mrc.Bookmark
mrc.MoveLast
mrc.Delete
mrc.Bookmark = myBookmark
Call viewData
Else
myBookmark = mrc.Bookmark
mrc.MovePrevious
mrc.Delete
mrc.Bookmark = myBookmark
Call viewData
End If
Else
mrc.Bookmark = myBookmark
Call viewData
End If
End Sub
解决方案(在源代码上添加一段代码即可):第一:
Private Sub deleteCommand_Click()
On ErrorGoTo_s_err
myBookmark = mrc.Bookmark
str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")
If str2$ = vbOK Then
mrc.MoveNext
If mrc.EOF Then
mrc.MoveFirst
myBookmark = mrc.Bookmark
mrc.MoveLast
mrc.Delete
mrc.Bookmark = myBookmark
Call viewData
Else
myBookmark = mrc.Bookmark
mrc.MovePrevious
mrc.Delete
mrc.Bookmark = myBookmark
Call viewData
End If
Else
mrc.Bookmark = myBookmark
Call viewData
End If
s_err:
msgbox "记录已经删除!",vbOkonly +vbExclamation,"警告"
End Sub
但是这种方法是查错用的,出现错误就跳过,感觉不太专业,所以第二种方法更提倡大家用!
第二:
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
mrc.MoveNext
mrc.Delete
MsgBox "最后一条记录已经删除,记录已经为空!", vbOKOnly + vbExclamation, "警告"
Unload Me
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
其实出现这两种错误的根本原因是:数据记录为空!在数据库中sql语句查询出来的值是空的,因此mrc数据集是空的,没有数据可以返回给文本框,所以就报错了!