BUG 五:添加成绩时应有顺序
表与表之间是由那些连接字段连接在一起的,所以这些连接字段不仅不能随便输入,而且还得有一定的顺序。
比如在frmAddResult中,学号和课程内容是由班号来确定的,而姓名又是由学号来确定的。所以我们必须控制在没选班号之前学号和课程是不可以选择的,而姓名又是跟学号是绑在一起的,所以姓名不能随便更改(姓名被锁住),而分数必须是在这些信息都填完后(这才能准确的表示一个人)才可以填写。
原代码:
添加班号在Form_Load过程中
Private Sub Form_Load()
- Dim mrc As ADODB.Recordset
- Dim txtSQL As String
- Dim MsgText As String
- Flagselect = False
- txtSQL = "select * from class_Info "
- Set mrc = ExecuteSQL(txtSQL, MsgText)
- While (mrc.EOF = False)
- comboClassno.AddItem mrc!class_No
- mrc.MoveNext
- Wend
- mrc.Close
添加学号和课程在comboClassno_Click过程中
Private Sub comboClassno_Click()
- Dim mrc As ADODB.Recordset
- Dim txtSQL As String
- Dim MsgText As String
- comboSID.Clear
- comboCourse.Clear
- txtSQL = "select * from student_Info where class_NO = '" & comboClassno.Text & "'"
- Set mrc = ExecuteSQL(txtSQL, MsgText)
- While (mrc.EOF = False)
- comboSID.AddItem mrc!student_ID
- mrc.MoveNext
- Wend
- mrc.Close
- txtSQL = "select * from class_Info where class_No = '" & comboClassno.Text & "'"
- Set mrc = ExecuteSQL(txtSQL, MsgText)
- Grade = mrc!Grade
- mrc.Close
- txtSQL = "select * from gradecourse_Info where grade = '" & Grade & "'"
- Set mrc = ExecuteSQL(txtSQL, MsgText)
- While (mrc.EOF = False)
- comboCourse.AddItem mrc!course_Name
- mrc.MoveNext
- Wend
- mrc.Close
- Flagselect = True
End Sub
改后代码:
添加班号在cboClassNumber_DropDown过程中,且在选择考试类型后
Private Sub cboClassNumber_DropDown()
- Dim mrs As ADODB.Recordset
- Dim strSQL As String
- Dim MsgText As String
- If Trim(cboExamType.Text) = "" Then
- MsgBox "请先选择考试类型!", vbExclamation + vbOKOnly, "提示"
- cboExamType.SetFocus
- Exit Sub
- End If
- strSQL = "select * from class_Info"
- Set mrs = ExecuteSQL(strSQL, MsgText)
- If mrs.EOF Then
- MsgBox "没有班号,请先添加班号!", vbInformation + vbOKOnly, "提示"
- frmAddClassinfo.Show
- frmAddResult.Hide
- Exit Sub
- End If
- cboClassNumber.Clear
- While Not (mrs.EOF)
- cboClassNumber.AddItem mrs!class_No
- mrs.MoveNext
- Wend
- mrs.Close
End Sub
添加学号在cboNumber_DropDown过程中,且在选择考试类型,班号之后
Private Sub cboNumber_DropDown()
- Dim mrs As ADODB.Recordset
- Dim strSQL As String
- Dim MsgText As String
- If Trim(cboExamType.Text) = "" Then
- MsgBox "请先选择考试类型!", vbExclamation + vbOKOnly, "提示"
- cboExamType.SetFocus
- Exit Sub
- ElseIf Trim(cboClassNumber.Text) = "" Then
- MsgBox "请先选择班号!", vbExclamation + vbOKOnly, "提示"
- cboClassNumber.SetFocus
- Exit Sub
- Else
- strSQL = "select * from student_Info where class_No='" & cboClassNumber.Text & "'"
- Set mrs = ExecuteSQL(strSQL, MsgText)
- If mrs.EOF Then
- MsgBox "该班没有学号,请先添加学号!", vbInformation + vbOKOnly, "提示"
- frmAddResult.Hide
- frmAddsinfo.Show
- End If
- cboNumber.Clear
- While Not (mrs.EOF)
- cboNumber.AddItem mrs!student_ID
- mrs.MoveNext
- Wend
- mrs.Close
- End If
End Sub
添加课程在cboCourse_DropDown过程中,在考试类型,班号及学号之后
Private Sub cboCourse_DropDown()
- Dim mrs As ADODB.Recordset
- Dim strSQL As String
- Dim MsgText As String
- If Trim(cboExamType.Text) = "" Then
- MsgBox "请先选择考试类型!", vbExclamation + vbOKOnly, "提示"
- cboExamType.SetFocus
- Exit Sub
- ElseIf Trim(cboClassNumber.Text) = "" Then
- MsgBox "请先选择班号!", vbExclamation + vbOKOnly, "提示"
- cboClassNumber.SetFocus
- Exit Sub
- ElseIf Trim(cboNumber.Text) = "" Then
- MsgBox "请先选择学号!", vbExclamation + vbOKOnly, "提示"
- cboNumber.SetFocus
- Exit Sub
- Else
- strSQL = "select * from class_Info where class_No='" & cboClassNumber.Text & "'"
- Set mrs = ExecuteSQL(strSQL, MsgText)
- While Not (mrs.EOF)
- strGrade = mrs!Grade
- mrs.MoveNext
- Wend
- mrs.Close
- strSQL = "select * from gradecourse_Info where grade='" & strGrade & "'"
- Set mrs = ExecuteSQL(strSQL, MsgText)
- If mrs.EOF Then
- MsgBox "概年级没有课程,请先添加课程!", vbInformation + vbOKOnly, "提示"
- frmAddResult.Hide
- frmSetCourseinfo.Show
- End If
- cboCourse.Clear
- While Not (mrs.EOF)
- cboCourse.AddItem mrs!course_Name
- mrs.MoveNext
- Wend
- mrs.Close
- End If
End Sub
'判断姓名之前的选项是否已选择
Private Sub txtName_KeyDown(KeyCode As Integer, Shift As Integer)
- If Trim(cboExamType.Text) = "" Then
- MsgBox "请先选择考试类型!", vbExclamation + vbOKOnly, "提示"
- cboExamType.SetFocus
- Exit Sub
- ElseIf Trim(cboClassNumber.Text) = "" Then
- MsgBox "请先选择班号!", vbExclamation + vbOKOnly, "提示"
- cboClassNumber.SetFocus
- Exit Sub
- ElseIf Trim(cboNumber.Text) = "" Then
- MsgBox "请选择学号!", vbExclamation + vbOKOnly, "提示"
- cboNumber.SetFocus
- Exit Sub
- End If
End Sub
'判断分数之前的选项是否已选择
Private Sub txtResult_KeyDown(KeyCode As Integer, Shift As Integer)
- If Trim(cboExamType.Text) = "" Then
- MsgBox "请先选择考试类型!", vbExclamation + vbOKOnly, "提示"
- cboExamType.SetFocus
- Exit Sub
- ElseIf Trim(cboClassNumber.Text) = "" Then
- MsgBox "请先选择班号!", vbExclamation + vbOKOnly, "提示"
- cboClassNumber.SetFocus
- Exit Sub
- ElseIf Trim(cboNumber.Text) = "" Then
- MsgBox "请先选择学号!", vbExclamation + vbOKOnly, "提示"
- cboNumber.SetFocus
- Exit Sub
- ElseIf Trim(cboCourse.Text) = "" Then
- MsgBox "请先选择课程!", vbExclamation + vbOKOnly, "提示"
- cboCourse.SetFocus
- Exit Sub
- End If
End Sub