前言 学生系统已经做好有一段时间了,最近有小伙伴在这个阶段然后来寻求帮助,聊天的过程中有了新的需求和想法通过讨论实验终于将需求变成了实际的代码功能。 需求的主要内容:学生成绩输入的过程中,输入学生学号,下拉菜单中会出现包含输入的相关数字的选项。可以提高输入速度,方便成绩录入人员。
正文 首通过截图来看看效果。 首先是学号下拉框中的数据:输入数字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 Private Sub cmdcancel_Click() Private Sub cmdOK_Click() Dim mrc As ADODB.Recordset If Not testtxt(comboExamtype.Text) Then '输入框中不能为空 MsgBox "请输入考试编号!", vbOKOnly + vbExclamation, "警告" If Not testtxt(comboClassno.Text) Then MsgBox "请选择班号!", vbOKOnly + vbExclamation, "警告" If Not testtxt(comboSID.Text) Then MsgBox "请选择学号!", vbOKOnly + vbExclamation, "警告" If Not testtxt(comboCourse.Text) Then MsgBox "请选择课程!", vbOKOnly + vbExclamation, "警告" If Not testtxt(txtResult.Text) Then MsgBox "请输入分数!", vbOKOnly + vbExclamation, "警告" If Not IsNumeric(txtResult.Text) Then MsgBox "分数请输入数字!", vbOKOnly + vbExclamation, "警告" 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) MsgBox "有相同记录,请重新输入信息!", vbOKOnly + vbExclamation, "警告" 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 MsgBox "添加成绩成功!", vbOKOnly + vbExclamation, "警告" Private Sub comboSID_Change() Dim mrc As ADODB.Recordset List1.Left = comboSID.Left List1.Top = comboSID.Top + comboSID.Height List1.Width = comboSID.Width For i = 0 To comboSID.ListCount - 1 If InStr(1, Left(comboSID.List(i), Len(tempstr)), tempstr) <> 0 Then List1.AddItem comboSID.List(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)) Private Sub comboSID_Click() Dim mrc As ADODB.Recordset 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)) Dim mrc As ADODB.Recordset Dim mrcc As ADODB.Recordset txtSQL = "select * from student_info " Set mrc = ExecuteSQL(txtSQL, MsgText) comboClassno.AddItem mrc!class_no comboSID.AddItem mrc!student_id txtSQL = "select*from course_info" Set mrcc = ExecuteSQL(txtSQL, MsgText) comboCourse.AddItem mrcc!course_name comboExamtype.AddItem "2000期中" comboExamtype.AddItem "2000期末" comboExamtype.AddItem "2001期中" comboExamtype.AddItem "2001期末" Private Sub List1_Click() comboSID.Text = List1.Text
结束语
每一次回顾都会有新的收获,每次的讨论都会碰撞出新的想法。通过不断的完善程序代码,让自己不断的成长。
|