学生信息管理系统———隐藏窗体——BUG调试
在做修改成绩信息时,遇到了这样的问题:如果把记录都删除完了,没有记录了,还是点击修改记录之后,就会弹出一个对话框:
点击确定之后,修改记录的窗体还是会出来,
点击任何一个按钮,都会出现如下错误:
于是就想能不能把没有记录后的修改信息这个窗体隐藏了,原代码:
Private Sub Form_Load() '加载窗体 Dim txtSQL As String Dim msgtext As String comboClassno.Enabled = False '使控件无效 ComboExamtype.Enabled = False ComboSID.Enabled = False txtName.Enabled = False comboCourse.Enabled = False txtResult.Enabled = False updateCommand.Enabled = False cancelCommand.Enabled = False txtSQL = "select*from result_Info" '查询result语句 Set mrc = ExecuteSQL(txtSQL, msgtext) If mrc.EOF = False Then '查看是否有记录,如果有则移动到第一条并做标记,如果没有则显示“没有记录” mrc.MoveFirst myBookmark = mrc.Bookmark Call viewData Else MsgBox "没有记录!", vbOKOnly + vbExclamation, "警告" Exit Sub End If Me.Left = (Screen.Width - Me.Width) / 2 Me.Top = (Screen.Height - Me.Height) / 2 End Sub
原因是它在显示没有记录后,就会自动调用修改信息这个窗体,
Private Sub modifyresultMenu_Click() frmModifyresult.Show sbStatusBar.Panels(1).Text = "修改成绩信息" End Sub
让它显示,所以只要在它显示之前做一个判断(没有记录就退出,有记录就显示)就行了。修改后代码:
Private Sub modifyresultMenu_Click()Dim txtSQL As StringDim msgtext As String txtSQL = "select*from result_Info" '查询result语句 Set mrc = ExecuteSQL(txtSQL, msgtext) If mrc.EOF = False Then '查看是否有记录,如果有则移动到第一条并做标记,如果没有则显示“没有记录” mrc.MoveFirst myBookmark = mrc.Bookmark Call frmModifyresult.viewData Else MsgBox "没有记录!", vbOKOnly + vbExclamation, "警告" Exit Sub End If frmModifyresult.Show sbStatusBar.Panels(1).Text = "修改成绩信息" End Sub
修改之后还是会出现错误,
调试之后总是指向定义的viewdata函数,原代码
Public Sub viewData() ComboExamtype.Text = mrc!exam_No '把exam_No表中的内容给考试编号 comboClassno.Text = mrc!class_No ComboSID.Text = mrc!student_ID txtName.Text = mrc!student_Name comboCourse.Text = mrc!course_Name txtResult.Text = mrc!result End Sub
会出现这样的错误:原因是调用这个函数之前窗体没有加载,函数中也没有把记录集调出来的语句,这样就是空记录,故会出现错误。修改后代码:
Public Sub viewData() txtSQL = "select*from result_Info" '查询result语句 Set mrc = ExecuteSQL(txtSQL, msgtext) ComboExamtype.Text = mrc!exam_No '把exam_No表中的内容给考试编号 comboClassno.Text = mrc!class_No ComboSID.Text = mrc!student_ID txtName.Text = mrc!student_Name comboCourse.Text = mrc!course_Name txtResult.Text = mrc!result End Sub