加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

VB机房收费系统07——组合查询

发布时间:2020-12-16 23:52:40 所属栏目:大数据 来源:网络整理
导读:前言 我们以“学生基本信息维护”窗体为例,介绍下组合查询 正文 如图,首先让我们来理解下组合查询是如何实现的。 我们把第一排的前三个文本框看作第一个限定条件。 例如"框1"选择" 卡号 ",“框2”选择“=”,“框3”选择"2",这三个框组成了第一个限定条件

前言

我们以“学生基本信息维护”窗体为例,介绍下组合查询


正文


如图,首先让我们来理解下组合查询是如何实现的。

我们把第一排的前三个文本框看作第一个限定条件。

例如"框1"选择"卡号",“框2”选择“=”,“框3”选择"2",这三个框组成了第一个限定条件。

卡号=2

当我们只写一个限定条件时,是不需要组合关系框的。

但当我们填写了第一排和第二排后,两个条件共同筛选信息,这是就需要选择组合关系“与”还是“或”。这就是组合查询。

但我们需要搞清楚,如何依据选择限定条件的个数,让“与”“或”分别生效。


完整代码

Private Sub Form_Load()
'添加下拉框信息
    Combo1.AddItem "卡号"
    Combo1.AddItem "学号"
    Combo1.AddItem "姓名"
    Combo1.AddItem "性别"
    Combo1.AddItem "系别"
    Combo1.AddItem "年级"
    Combo1.AddItem "班级"
    
    Combo2.AddItem "卡号"
    Combo2.AddItem "学号"
    Combo2.AddItem "姓名"
    Combo2.AddItem "性别"
    Combo2.AddItem "系别"
    Combo2.AddItem "年级"
    Combo2.AddItem "班级"
    
    Combo3.AddItem "卡号"
    Combo3.AddItem "学号"
    Combo3.AddItem "姓名"
    Combo3.AddItem "性别"
    Combo3.AddItem "系别"
    Combo3.AddItem "年级"
    Combo3.AddItem "班级"
    
    Combo4.AddItem "<"
    Combo4.AddItem ">"
    Combo4.AddItem "="
    Combo4.AddItem "<>"
    
    Combo5.AddItem "<"
    Combo5.AddItem ">"
    Combo5.AddItem "="
    Combo5.AddItem "<>"
    
    Combo6.AddItem "<"
    Combo6.AddItem ">"
    Combo6.AddItem "="
    Combo6.AddItem "<>"
    
    Combo7.AddItem "与"
    Combo7.AddItem "或"
    
    Combo8.AddItem "与"
    Combo8.AddItem "或"
    
    
    

'如果组合查询框控件为空,不能选择如下查询条件
     If Combo7.Text = "" Then

        Combo2.Enabled = False
        Combo3.Enabled = False
        Combo5.Enabled = False
        Combo6.Enabled = False
        Text2.Enabled = False
        Text3.Enabled = False
        Combo8.Enabled = False
     End If

     If Combo8.Text = "" Then

        Combo3.Enabled = False
        Combo6.Enabled = False
        Text3.Enabled = False
     End If
     

    
End Sub





'激活组合控件
Private Sub Timer1_Timer()
  If Combo7.Text <> "" Then
        Combo2.Enabled = True
        Combo5.Enabled = True
        Combo8.Enabled = True
        Text2.Enabled = True
    End If
End Sub

Private Sub Timer2_Timer()
If Combo8.Text <> Trim("") Then
        Combo3.Enabled = True
        Combo6.Enabled = True
        Text3.Enabled = True
    End If
End Sub



'组合查询
Private Sub cmdinquire_Click()
    Dim mrc As ADODB.Recordset
    Dim txtsql As String
    Dim msgtext As String
    Dim fieldname,fieldname2,fieldname3,fieldname4,fieldname5
    
'第一行
'把人话转换成机器话

    Select Case Combo1.Text
        Case "卡号"
            fieldname = "cardno"
        Case "学号"
            fieldname = "studentNo"
        Case "姓名"
            fieldname = "studentName"
        Case "性别"
            fieldname = "sex"
        Case "系别"
            fieldname = "department"
        Case "年级"
            fieldname = "grade"
        Case "班级"
            fieldname = "class"
     End Select
     
     
'判断查询项是否未选择

    If Trim(Combo1.Text = "") Or Trim(Combo4.Text = "") Or Trim(Text1.Text = "") Then
       MsgBox "请填写完整的查询条件!",vbonly + vbExclamation,"提示"
        Exit Sub
    
    Else
    
        txtsql = "select * from student_Info where " & fieldname & Combo4.Text & "'" & Text1.Text & "'"
        Set mrc = ExecuteSQL(txtsql,msgtext)
        
    If mrc.EOF = True Then
        MsgBox "该条件的数据不存在!",vbOKOnly + vbExclamation,"提示"
    Exit Sub

        
End If
End If





'第二行
''组合查询框判断
    If Combo7 = Trim("") Then
        Combo2.Enabled = False
        Combo3.Enabled = False
        Combo5.Enabled = False
        Combo6.Enabled = False
        Combo8.Enabled = False
        Text2.Enabled = False
        Text3.Enabled = False
    Else
    
        Select Case Combo7.Text
        
            Case "与"
                fieldname2 = "and"
            Case "或"
                fieldname2 = "or"
        End Select
        
        
    Select Case Combo2.Text
        Case "卡号"
            fieldname3 = "cardno"
        Case "学号"
            fieldname3 = "studentNo"
        Case "姓名"
            fieldname3 = "studentName"
        Case "性别"
            fieldname3 = "sex"
        Case "系别"
            fieldname3 = "department"
        Case "年级"
            fieldname3 = "grade"
        Case "班级"
            fieldname3 = "class"
     End Select
                
'判断查询项是否未选择

    If Trim(Combo2.Text = "") Or Trim(Combo5.Text = "") Or Trim(Text2.Text = "") Then
       MsgBox "请填写完整的查询条件!","提示"
        Exit Sub
    Else
        txtsql = txtsql & fieldname2 & " " & fieldname3 & Combo5.Text & "'" & Text2.Text & "'"
        Set mrc = ExecuteSQL(txtsql,"提示"
        Exit Sub
 End If
 End If
 End If
                
                
'第三行
    If Trim(Combo8.Text) = "" Then
        Combo3.Enabled = False
        Combo6.Enabled = False
        Text3.Enabled = False
'显示上机信息

    
    Else
    
        Select Case Combo8.Text
        
            Case "与"
                fieldname4 = "and"
            Case "或"
                fieldname4 = "or"
        End Select
                
                
        Select Case Combo3.Text
            Case "卡号"
                fieldname5 = "cardno"
            Case "学号"
                fieldname5 = "studentNo"
            Case "姓名"
                fieldname5 = "studentName"
            Case "性别"
                fieldname5 = "sex"
            Case "系别"
                fieldname5 = "department"
            Case "年级"
                fieldname5 = "grade"
            Case "班级"
                fieldname5 = "class"
     End Select
                
                
                
    If Trim(Combo3.Text = "") Or Trim(Combo6.Text = "") Or Trim(Text3.Text = "") Then
       MsgBox "请填写完整的查询条件!","提示"
        Exit Sub
    Else
        txtsql = txtsql & fieldname4 & " " & fieldname5 & Combo6.Text & "'" & Text3.Text & "'"
        Set mrc = ExecuteSQL(txtsql,"提示"
        Exit Sub
End If
End If
End If

                
                
'显示上机信息

    With MSFlexGrid1
        .Rows = 1
        .CellAlignment = 4
        .TextMatrix(0,0) = "卡号"
        .TextMatrix(0,1) = "姓名"
        .TextMatrix(0,2) = "性别"
        .TextMatrix(0,3) = "系别"
        .TextMatrix(0,4) = "年级"
        .TextMatrix(0,5) = "班级"
        .TextMatrix(0,6) = "余额"
        .TextMatrix(0,7) = "备注"
        .TextMatrix(0,8) = "注册教师"
        .TextMatrix(0,9) = "状态"
        .TextMatrix(0,10) = "结账"
        .TextMatrix(0,11) = "注册日期"
        .TextMatrix(0,12) = "注册时间"
        .TextMatrix(0,13) = "用户类型"
        .TextMatrix(0,14) = "学号"
        
    Do While Not mrc.EOF
        .Rows = .Rows + 1
        .CellAlignment = 4
        .TextMatrix(.Rows - 1,0) = Trim(mrc.Fields(0))
        .TextMatrix(.Rows - 1,1) = Trim(mrc.Fields(2))
        .TextMatrix(.Rows - 1,2) = Trim(mrc.Fields(3))
        .TextMatrix(.Rows - 1,3) = Trim(mrc.Fields(4))
        .TextMatrix(.Rows - 1,4) = Trim(mrc.Fields(5))
        .TextMatrix(.Rows - 1,5) = Trim(mrc.Fields(6))
        .TextMatrix(.Rows - 1,6) = Trim(mrc.Fields(7))
        .TextMatrix(.Rows - 1,7) = Trim(mrc.Fields(8))
        .TextMatrix(.Rows - 1,8) = Trim(mrc.Fields(9))
        .TextMatrix(.Rows - 1,9) = Trim(mrc.Fields(10))
        .TextMatrix(.Rows - 1,10) = Trim(mrc.Fields(11))
        .TextMatrix(.Rows - 1,11) = Trim(mrc.Fields(12))
        .TextMatrix(.Rows - 1,12) = Trim(mrc.Fields(13))
        .TextMatrix(.Rows - 1,13) = Trim(mrc.Fields(14))
        .TextMatrix(.Rows - 1,14) = Trim(mrc.Fields(1)) & ""
        mrc.MoveNext
    Loop
    End With
                

End Sub


Private Sub cmdempty_Click()
'清空选项
    Combo1.Text = ""
    Combo2.Text = ""
    Combo3.Text = ""
    Combo4.Text = ""
    Combo5.Text = ""
    Combo6.Text = ""
    Combo7.Text = ""
    Combo8.Text = ""
    Text1.Text = ""
    Text2.Text = ""
    Text3.Text = ""
    
'清空上机信息

    With MSFlexGrid1
        .Rows = 1
        .CellAlignment = 4
        .TextMatrix(0,14) = "学号"
    End With
                

End Sub

Private Sub cmdexit_Click()
'退出
    Unload Me
End Sub
Private Sub cmdmodify_Click()



'显示选中列的信息
    Dim txtsql As String
    Dim msgtext As String
    Dim mrc As ADODB.Recordset
    

With MSFlexGrid1

    studentinfomodify.cardno.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row,0)
    studentinfomodify.studentname.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row,1)
    studentinfomodify.combosex.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row,8)
    studentinfomodify.dept.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row,5)
    studentinfomodify.grade.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row,6)
    studentinfomodify.class.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row,7)
    studentinfomodify.studentno.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row,3)
    studentinfomodify.money.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row,4)
    studentinfomodify.status.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row,9)
    studentinfomodify.information.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row,10)
    studentinfomodify.combostyle.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row,13)
    
 
    Unload Me


'弹出修改窗体
    studentinfomodify.Show
End With
End Sub


结语

我的代码有些繁琐之处,聪明的你能发现更简洁的表示代码吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读