机房收费(三)之组合查询

前言

              第一次看到学生基本信息维护这一窗体时,第一反应就是大写的“懵”。。。完全不知道这里用到什么知识,有点望而却步的感觉。可真当静下心来,却发现它其实就是学生信息管理系统中类似查询学籍信息的窗体,大同小异。这个时候,我才开始重新看这个窗体,重新思考组合查询,以及查看学生中的相关代码。 万事开头难!明白窗体用到哪些核心知识,其他问题自然迎刃而解。

与学生之对比

1.界面
学生:

机房:

2.内容:
       从上面两个图不难看出,学生中的组合查询共包含3个条件:条件1:按学号查询;条件2:按姓名查询;条件3:按班号查询,查询中可以让其任意组合,关系只能为“与”,不能为”或”。
       而机房相比学生,关系就要更复杂一些,一个条件的设定就必须包含三个控件的内容,三个条件的关系分为两种,即“与””或”。且其在选择中有一定的顺序:只有第一行的条件全部填好,才可以选择第一个组合关系;同理,只有前两行的条件及第一个组合关系按顺序填好,才可以选择第二个组合关系,进而填写第三行条件。
       当然,还有一点不得不提的是,当字段名为“性别”时,操作符只能选择“=”或“<>”;字段名为日期或者时间时,查询内容要有格式要求,其他优化内容同理。

思路分析

流程图


中心代码

(以学生基本信息维护为例)
StutxtSQL = "select * from student_Info where"
'在student_Info这张表中获得整行记录。其中*表示整行记录,也可以换成你需要查询的具体记录。
    
If Trim(Combo1.Text) = "" Or Trim(Combo2.Text) = "" Or Trim(Text1.Text) = "" Then
   MsgBox "请将选项内容填写完整!", vbOKOnly, "提示"
   Exit Sub
Else
   StutxtSQL = StutxtSQL & " " & field(Combo1.Text) & " " & Combo2.Text & "'" & Trim(Text1.Text) & "'"
        
   If Combo7.Text <> "" Then
   '判断第一个组合关系是否选中
       If Combo3.Text = "" Or Combo4.Text = "" Or Text2.Text = "" Then
       '如果选中,判断第二行内容是否填写完整,且符合要求
           MsgBox "请将第二行选项内容填写完整!", vbOKOnly, "提示"
           Exit Sub
       Else
           StutxtSQL = StutxtSQL & " " & field(Combo7.Text) & " " & field(Combo3.Text) & " " & Combo4.Text & "'" & Trim(Text2.Text) & "'"
           '将前两行的条件联系起来,完成SQL语句
            If Combo8.Text <> "" Then
            '判断第二个组合关系是否选中
                 If Combo5.Text = "" Or Combo6.Text = "" Or Text3.Text = "" Then
                 '如果选中,判断第二行内容是否填写完整,且符合要求
                     MsgBox "请将第三行选项内容填写完整!", vbOKOnly, "提示"
                     Exit Sub
                 Else
                     StutxtSQL = StutxtSQL & " " & field(Combo8.Text) & " " & field(Combo5.Text) & " " & Trim(Combo6.Text) & "'" & Trim(Text3.Text) & "'"
                     '将三行的条件联系起来,完成SQL语句
                 End If
            End If
        End If
End If
        
Set Stumrc = ExecuteSQL(StutxtSQL, StuMsgtext)
'在用户表中查找用户
'ExecuteSQL是自定义函数。ExecuteSQL是执行SQL语句(execute:执行,一般按照用途定义名字的)里面的两个参数
'txtSQL 是指 用来执行的SQL语句 比如:select * from 表
'MsgText参数 指的是实行完SQL语句后的弹出框 是成功了还是失败了之类的

 其他      

组合查询的中心代码其实只有两句话:
txtSQL = "select * from 表名称 where"
txtSQL = txtSQL & " " & field(组合关系) & " " & field(某行条件中运算符前的内容) & " " & 该行条件中的运算符号 & "'" & 运算符后的内容 & "'"
这样写出来可能更好理解一些,但field是什么?
其实呢,field是一个被定义的函数过程,可以使VB程序中的字段名与数据库中的列名相对应。
如此一来,txtSQL="select * from 表名称 where 字段名" 就可以在该窗体被恰当的使用。
field的定义可以如下所示:
Public Function field(a As String) As String
'定义一个函数过程
    Select Case a
    '字段名与数据库中的列名相对应
    '学生基本信息维护要用到的字段
            Case "学号"
        field = "studentno"
            Case "姓名"
        field = "studentName"
            Case "卡号"
        field = "cardno"
            Case "金额"
        field = "cash"
            Case "系别"
        field = "department"
            Case "年级"
        field = "grade"
            Case "班级"
        field = "class"
            Case "性别"
        field = "sex"
            Case "状态"
        field = "status"
            Case "备注"
        field = "explain"
            Case "类型"
        field = "type"
            Case "日期"
        field = "date"
            Case "时间"
        field = "time"
      
            Case "或"
        field = "or "
            Case "与"
        field = "and "
   End Select
End Function

小结

       机房学习中遇到的一系列困难,让我明白,我们不能因为害怕困难就止步不前,我们现在正处于允许犯错的阶段,也正是知识的快速增长期,希望我们每个人都可以把握好机遇,利用好资源,取得更大的进步,在最美的年华遇到最好的我们!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值