机房收费系统之组合查询

来源:互联网 发布:北京西城区楼盘 知乎 编辑:程序博客网 时间:2024/04/26 17:42

 组合查询相对来说就是繁琐一点,下面就是我对组合查询的一些理解:

首先要做的就是:先理清里面的关系。

    我将上面的查询条件分成三个部门,分别为:第一查询条件,第二查询条件,第三查询条件;中间以组合关系为分界线。

    其次,将字段名及组合关系中的内容转换成数据库中相对应的字段及关键字。这时就要用到过程:

Private Sub QueryCondition2()    '将字段2转成sql里与之对应的字段名    Select Case Combo4        Case "卡号"        ZiDuan(1) = "cardID"        Case "姓名"        ZiDuan(1) = "studentName"        Case "上机日期"        ZiDuan(1) = "OnboardDate"        Case "上机时间"        ZiDuan(1) = "OnboardTime"        Case "下机日期"        ZiDuan(1) = "OffboardDate"        Case "下机时间"        ZiDuan(1) = "OffboardTime"        Case "消费金额"        ZiDuan(1) = "OnboardCost"        Case "余额"        ZiDuan(1) = "RemainMoney"        Case "备注"        ZiDuan(1) = "BeiZhu"    End Select        '转义sql连接字符1    Select Case Combo3        Case "与"        ZuHeRelation(0) = "and"        Case "或"        ZuHeRelation(0) = "or"    End SelectEnd Sub

    其余的转义条件也是一样的,这里就不在累赘。有了上面的查询条件,最后就是将这些条件连接起来组成查询语句:    

Private Sub SQL()    '查询条件函数    txtSQL = "select * from studentOnboardRecord_Info where "‘判断查询条件1'判断字段不能为空    If Combo1.Text = "" Then        MsgBox "字段不能为空", vbOKOnly + vbExclamation, "提示"        Combo1.SetFocus        Exit Sub    End If‘判断操作符不能为空    If Combo2.Text = "" Then        MsgBox "操作符不能为空", vbOKOnly + vbExclamation, "提示"        Combo2.SetFocus        Exit Sub    End If’判断查询内容不能为空    If Text1.Text = "" Then        MsgBox "查询内容不能为空", vbOKOnly + vbExclamation, "提示"        Text1.SetFocus        Exit Sub    End If        Call QueryCondition1    ’一二查询语句分界线语句,为空则查询语句为第一查询条件,不为空则继续判断第二查询条件    If Combo3.Text = "" Then        txtSQL = txtSQL & " " & Trim(ZiDuan(0)) & "  " & Trim(Combo2.Text) & " '" & Trim(Text1.Text) & "'"    Else‘判断第二查询条件’字段不能为空        If Combo4.Text = "" Then            MsgBox "字段不能为空", vbOKOnly + vbExclamation, "提示"            Combo4.SetFocus            Exit Sub        End If‘操作符不能为空        If Combo5.Text = "" Then            MsgBox "操作符不能为空", vbOKOnly + vbExclamation, "提示"            Combo5.SetFocus            Exit Sub        End If’查询内容不能为空        If Text2.Text = "" Then            MsgBox "查询内容不能为空", vbOKOnly + vbExclamation, "提示"            Text2.SetFocus            Exit Sub        End If        ‘调用查询条件2        Call QueryCondition2        ‘二三查询条件分界线        If Combo6.Text = "" Then            txtSQL = txtSQL & " " & Trim(ZiDuan(0)) & "  " & Trim(Combo2.Text) & " '" & Trim(Text1.Text) & "' " & Trim(ZuHeRelation(0)) & " " & Trim(ZiDuan(1)) & "  " & Trim(Combo5.Text) & " '" & Trim(Text2.Text) & "'"        Else’判断查询条件3‘字段不能为空            If Combo7.Text = "" Then                MsgBox "字段不能为空", vbOKOnly + vbExclamation, "提示"                Combo7.SetFocus                Exit Sub            End If’操作符不能为空            If Combo8.Text = "" Then                MsgBox "操作符不能为空", vbOKOnly + vbExclamation, "提示"                Combo8.SetFocus                Exit Sub            End If‘查询内容不能为空            If Text3.Text = "" Then                MsgBox "查询内容不能为空", vbOKOnly + vbExclamation, "提示"                Text3.SetFocus                Exit Sub            End If            ’调用查询条件3            Call QueryCondition3            txtSQL = txtSQL & " " & Trim(ZiDuan(0)) & "  " & Trim(Combo2.Text) & " '" & Trim(Text1.Text) & "' " & Trim(ZuHeRelation(0)) & " " & Trim(ZiDuan(1)) & "  " & Trim(Combo5.Text) & " '" & Trim(Text2.Text) & "' " & Trim(ZuHeRelation(1)) & " " & Trim(ZiDuan(2)) & "  " & Trim(Combo8.Text) & " '" & Trim(Text3.Text) & "'"        End If    End IfEnd Sub

 

    通过上面的过程而形成sql查询语句过程,剩下的只要在查询事件中调用sql查询语句过程即可。

    这样做使得在查询事件中代码量少而且清晰,简洁,一看就懂,很容易帮助我们快速的理解程序。

原创粉丝点击