机房收费系统之组合查询

组合查询不愧是机房三大难点之一,起初不知道如何组建查询的关系就去找巨人去了,最后看到巨人们的总结,捋顺了才明白,其实很简单。

我们的字段名选择是汉字,要想在数据库中查询字段,根本就不认识,这就需要我将汉字转换为相应的字符串,为了方便简洁,定义一个函数,代码中的FiledName就是我要利用到的一个函数。

'将汉字转换为相应的字段名字
Public Function FiledName(StrFiledName As String) As String
    Select Case StrFiledName
    Case "卡号"
        FiledName = "cardno"
    Case "学号"
        FiledName = "studentNo"
    Case "姓名"
        FiledName = "studentName"
    Case "性别"
        FiledName = "Sex"
    Case "学院"
        FiledName = "department"
    Case "年级"
        FiledName = "grade"
    Case "班级"
        FiledName = "class"
    Case "与"
        FiledName = "and"
    Case "或"
        FiledName = "or"
    End Select
End Function

 

我们以学生基本信息维护为例:

首先,它是一个多条件的组合查询,也就是说当我们先判断第一条件,若需要,在组合查询的列表框选择我们组合条件(即“与”or“或”)与第二条件判断,若第二条件也满足不了查询需求,则可使用第三条件。

 

关键代码展示:

Private Sub cmdQuery_Click()
    Dim mrc As ADODB.Recordset
    Dim txtsql As String
    Dim msgtext As String
 
    txtsql = "select * from student_Info where "
 
    '判断字段的选择是否为空
 
    If Not Testtxt(comboFiledName1.Text) Then
        MsgBox "请选择字段!", vbOKOnly + vbExclamation, "警告"
        comboFiledName1.SetFocus
        Exit Sub
    End If
 
    '判断操作符的选择是否为空
 
    If Not Testtxt(comboOperate1.Text) Then
        MsgBox "请选择操作符!", vbOKOnly + vbExclamation, "警告"
        comboOperate1.SetFocus
        Exit Sub
    End If
 
    '判断要查询的内容是否为空
 
    If Not Testtxt(txtContent1.Text) Then
        MsgBox "请在输入要查询的内容", vbOKOnly + vbExclamation, "警告"
        txtContent1.SetFocus
        Exit Sub
    End If
 
    txtsql = txtsql & FiledName(comboFiledName1.Text) & " " & comboOperate1.Text & "'" & txtContent1.Text & "'"
 
 
 
    '利用模版函数查看是否是组合查询第一行为空时,查询无效
 
    '开始组合查询
 
    If Trim(comboRelation1.Text <> "") Then
        If Trim(comboFiledName2.Text) = "" Or Trim(comboOperate2.Text) = "" Or Trim(txtContent2.Text) = "" Then
            MsgBox "您选择了组合关系,请输入数据之后再查询", vbOKOnly, "提示信息"
            Exit Sub
        Else
 
            txtsql = txtsql & FiledName(comboRelation1.Text) & " " & FiledName(comboFiledName2.Text) & comboOperate2.Text & "'" & Trim(txtContent2.Text) & "'"
        End If
    End If
 
    If Trim(comboRelation2.Text) <> "" Then
        If Trim(comboFiledName3.Text) = "" Or Trim(comboOperate3.Text) = "" Or Trim(txtContent3.Text) = "" Then
            MsgBox "您选择了第二个组合,请输入数据之后在查询", vbOKOnly, "提示"
            Exit Sub
        Else
 
            txtsql = txtsql & FiledName(comboRelation2.Text) & " " & FiledName(comboFiledName3.Text) & comboOperate3.Text & "'" & Trim(txtContent3.Text) & "'"
        End If
    End If

总结:

通过组合查询,我认识最深的一点就是不要上来就去看被人的博客,别人的不一定好,一定要自己先把逻辑关系弄清,要不上来就抄人家的代码之后功能实现了,感觉会了,心理就会想不过如此嘛!可当真正自己扔掉拐棍就会发现自己寸步难行。

 

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值