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

以学生上机统计信息查询

#前言
学生上机统计信息查询要实现的功能是查询 line 表中的一些信息,要查询的关键词主要是line表中的各个属性,可根据多个属性结合的方式来查询相关内容,所以是组合查询。
这里写图片描述

#正文

代码如下(相关解释在代码里)

Private Sub cmdOK_Click()
    
    
   '建立与数据库的联系(查询line表)
    txtsql = "select * from line_Info where "
  
   '判断第一行的3个选择条件是否为空
    '判断字段的选择是否为空
    If comboFiledName1.Text = "" Then
  
        MsgBox "请选择需要查询的信息!", vbOKOnly + vbExclamation, "警告"
  
        comboFiledName1.SetFocus
  
        Exit Sub
  
    End If
  
    '判断操作符的选择是否为空
  
    If ComboOperate1.Text = "" Then
  
        MsgBox "请选择限定符号!", vbOKOnly + vbExclamation, "警告"
  
        ComboOperate1.SetFocus
  
        Exit Sub
  
    End If
  
    '判断要查询的内容是否为空
  
    If Text1.Text = "" Then
  
        MsgBox "请在输入要查询的内容", vbOKOnly + vbExclamation, "警告"
  
        Text1.SetFocus
  
        Exit Sub
  
    End If
    
  '根据第一行进行查询(只有第一行不需要组合查询)
    txtsql = txtsql & Trim(Field(comboFiledName1.Text)) & " " & Trim(ComboOperate1.Text) & "'" & Trim(Text1.Text) & "'"
  
  '开始组合查询(有下一行可就开始组合查询)
    If Combo7.Text = "与" Or Combo7.Text = "或" Then  '选择框中有了与或者或
        

        If Trim(Field(comboFiledName2.Text)) = "" Or Trim(ComboOperate2.Text) = "" Or Trim(Text2.Text) = "" Then                    '判断第二行是否为空
  
            MsgBox "您选择了组合关系,请输入数据之后再查询", vbOKOnly, "提示信息"
  
            Exit Sub
  
        Else
  
            txtsql = txtsql & Trim(Field(Combo7.Text)) & " " & Trim(Field(comboFiledName2.Text)) & ComboOperate2.Text & "'" & Trim(Text2.Text) & "'"   '组合查询 
  
        End If
  
    End If
  
    If Combo8.Text = "与" Or Combo8.Text = "或" Then   '有3行的组合查询
      
        If Trim(Field(comboFiledName3.Text)) = "" Or Trim(ComboOperate3.Text) = "" Or Trim(Text3.Text) = "" Then
  
            MsgBox "您选择了第二个组合,请输入数据之后在查询", vbOKOnly, "提示"
  
            Exit Sub
  
        Else
  
            txtsql = txtsql & Trim(Field(Combo8.Text)) & " " & Trim(Field(comboFiledName3.Text)) & ComboOperate3.Text & "'" & Trim(Text3.Text) & "'"
  
        End If
  
    End If
  
   
  
    '开始进行查找
    Set mrc = executeSQL(txtsql, msgtext)
  
   
  
    If mrc.RecordCount = 0 Then
  
        MsgBox "没有您要查找的学生上机记录!", vbOKOnly + vbCritical, "查询提示"
  
        comboFiledName1.SetFocus
  
       myFlexGrid.Rows = 1
  
        '存在上机记录查询成功,填充到表格
  
    Else
    
     With myFlexGrid     '添加表头
        .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) = "备注"

    If mrc.BOF Then     '判断数据库是否为空
        MsgBox "学生上机记录为空!"
        Exit Sub
    End If

    Do While Not mrc.EOF        '逐行添加数据
        .Rows = .Rows + 1
        .CellAlignment = 4
        .TextMatrix(.Rows - 1, 0) = Trim(mrc.Fields(1))
        .TextMatrix(.Rows - 1, 1) = Trim(mrc.Fields(3))
        .TextMatrix(.Rows - 1, 2) = Trim(mrc.Fields(6))
        .TextMatrix(.Rows - 1, 3) = Trim(mrc.Fields(7))
        .TextMatrix(.Rows - 1, 4) = Trim(mrc.Fields(8)) & ""
        .TextMatrix(.Rows - 1, 5) = Trim(mrc.Fields(9)) & ""
        .TextMatrix(.Rows - 1, 6) = Trim(mrc.Fields(11))
        .TextMatrix(.Rows - 1, 7) = Trim(mrc.Fields(12))
        .TextMatrix(.Rows - 1, 8) = Trim(mrc.Fields(13))
        mrc.MoveNext
    Loop
    End With

    mrc.Close

    myFlexGrid.CellAlignment = 4
End If
End Sub

其他的command就比较简单了。

#注意事项

##(1) 逻辑很重要,逻辑对了代码就会非常的简单和清晰。
当两个组合框都为空时,则不用组合查询,只需要查询line表&第一行数据(此时下边两行查询条件都锁住不可操作);
当组合框1不为空时,则表明查询第一行和第二行,需要组合查询,(第二行解锁),此时需要查询line表&第一行数据&第二行数据(此时第三行还是锁住不可操作);
当组合框2也不为空时,则表明查询三行数据,更是组合查询,(三行都解锁),此时查询line表&第一行数据&第二行数据&第三行数据。

##(2)如何在没有组合查询的时候将第二行和第三行锁住?
我们是以组合框是否为空来判断要不要锁住下边的条件框,所以需要在还没操作之前就将后两行的锁住。在此窗体的click时间处进行。也就是这里:
这里写图片描述

然后,当点击组合框时解锁即可.。
这里写图片描述

##(3)用户体验是很重要的,对于第一图中的符号,要查询内容,是不是比原来的操作符等更通俗易懂呢,让用户体验更好,是我们的目标!

代码如有问题,请于本作者联系删除改正!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草莓味少女vv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值