前言
学生系统已经做好有一段时间了,最近有小伙伴在这个阶段然后来寻求帮助,聊天的过程中有了新的需求和想法通过讨论实验终于将需求变成了实际的代码功能。
需求的主要内容:学生成绩输入的过程中,输入学生学号,下拉菜单中会出现包含输入的相关数字的选项。可以提高输入速度,方便成绩录入人员。
正文
首通过截图来看看效果。
首先是学号下拉框中的数据:
输入数字3后的显示:
主要代码入下:
Dim mrc As ADODB.Recordset Dim txtSQL As String Dim MsgText As String Dim tempstr As String '定义list控件的基本属性 List1.Clear List1.Left = comboSID.Left List1.Top = comboSID.Top + comboSID.Height List1.Width = comboSID.Width List1.Visible = True 'list控件中显示相关数据 tempstr = comboSID.Text For i = 0 To comboSID.ListCount - 1 If InStr(1, Left(comboSID.List(i), Len(tempstr)), tempstr) <> 0 Then List1.AddItem comboSID.List(i) Next i '自动显示姓名 txtSQL = "select*from student_info where student_id='" & comboSID.Text & "'" Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc.RecordCount <> 0 Then txtName.Text = Trim(mrc.Fields(1)) End If
上边的代码主要是通过combox和list控件来实现的。
完整代码如下:
Dim flagselect As Boolean Dim grade As String Private Sub cmdcancel_Click() Unload Me End Sub Private Sub cmdOK_Click() Dim mrc As ADODB.Recordset Dim txtSQL As String Dim MsgText As String If Not testtxt(comboExamtype.Text) Then '输入框中不能为空 MsgBox "请输入考试编号!", vbOKOnly + vbExclamation, "警告" Exit Sub End If If Not testtxt(comboClassno.Text) Then MsgBox "请选择班号!", vbOKOnly + vbExclamation, "警告" Exit Sub End If If Not testtxt(comboSID.Text) Then MsgBox "请选择学号!", vbOKOnly + vbExclamation, "警告" Exit Sub End If If Not testtxt(comboCourse.Text) Then MsgBox "请选择课程!", vbOKOnly + vbExclamation, "警告" Exit Sub End If If Not testtxt(txtResult.Text) Then MsgBox "请输入分数!", vbOKOnly + vbExclamation, "警告" Exit Sub End If If Not IsNumeric(txtResult.Text) Then MsgBox "分数请输入数字!", vbOKOnly + vbExclamation, "警告" Exit Sub End If '添加的信息不能重复 txtSQL = "select*from result_info where exam_no='" & comboExamtype.Text & "'and student_id='" _ & comboSID.Text & "'and course_name='" & comboCourse.Text & "'" Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc.EOF = False Then MsgBox "有相同记录,请重新输入信息!", vbOKOnly + vbExclamation, "警告" mrc.Close '添加 Else mrc.AddNew mrc.Fields(0) = comboExamtype.Text mrc.Fields(1) = comboSID.Text mrc.Fields(2) = txtName.Text mrc.Fields(3) = comboClassno.Text mrc.Fields(4) = comboCourse.Text mrc.Fields(5) = txtResult.Text mrc.Update 'mrc.Close MsgBox "添加成绩成功!", vbOKOnly + vbExclamation, "警告" Unload Me End If End Sub Private Sub comboSID_Change() Dim mrc As ADODB.Recordset Dim txtSQL As String Dim MsgText As String Dim tempstr As String '定义list控件的基本属性 List1.Clear List1.Left = comboSID.Left List1.Top = comboSID.Top + comboSID.Height List1.Width = comboSID.Width List1.Visible = True 'list控件中显示相关数据 tempstr = comboSID.Text For i = 0 To comboSID.ListCount - 1 If InStr(1, Left(comboSID.List(i), Len(tempstr)), tempstr) <> 0 Then List1.AddItem comboSID.List(i) Next i '自动显示姓名 txtSQL = "select*from student_info where student_id='" & comboSID.Text & "'" Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc.RecordCount <> 0 Then txtName.Text = Trim(mrc.Fields(1)) End If End Sub Private Sub comboSID_Click() Dim mrc As ADODB.Recordset Dim txtSQL As String Dim MsgText As String List1.Visible = False '自动显示姓名 txtSQL = "select*from student_info where student_id='" & comboSID.Text & "'" Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc.RecordCount <> 0 Then txtName.Text = Trim(mrc.Fields(1)) End If End Sub Private Sub Form_Load() Dim mrc As ADODB.Recordset Dim mrcc As ADODB.Recordset Dim txtSQL As String Dim MsgText As String List1.Visible = False flagselect = False txtSQL = "select * from student_info " Set mrc = ExecuteSQL(txtSQL, MsgText) While (mrc.EOF = False) comboClassno.AddItem mrc!class_no comboSID.AddItem mrc!student_id mrc.MoveNext Wend 'mrc.Close txtSQL = "select*from course_info" Set mrcc = ExecuteSQL(txtSQL, MsgText) While (mrcc.EOF = False) comboCourse.AddItem mrcc!course_name mrcc.MoveNext Wend 'mrcc.Close comboExamtype.AddItem "2000期中" comboExamtype.AddItem "2000期末" comboExamtype.AddItem "2001期中" comboExamtype.AddItem "2001期末" End Sub Private Sub List1_Click() comboSID.Text = List1.Text List1.Visible = False End Sub
结束语
每一次回顾都会有新的收获,每次的讨论都会碰撞出新的想法。通过不断的完善程序代码,让自己不断的成长。