VB中模糊查询

前言

学生系统已经做好有一段时间了,最近有小伙伴在这个阶段然后来寻求帮助,聊天的过程中有了新的需求和想法通过讨论实验终于将需求变成了实际的代码功能。

需求的主要内容:学生成绩输入的过程中,输入学生学号,下拉菜单中会出现包含输入的相关数字的选项。可以提高输入速度,方便成绩录入人员。

正文

首通过截图来看看效果。
首先是学号下拉框中的数据:

输入数字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        

结束语

每一次回顾都会有新的收获,每次的讨论都会碰撞出新的想法。通过不断的完善程序代码,让自己不断的成长。


猜你喜欢

转载自blog.csdn.net/qq_39674002/article/details/80313747