机房收费系统之组合查询

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

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

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

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

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 Select

End 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 If
End Sub

 

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值