zoukankan      html  css  js  c++  java
  • 【机房收费系统】—— 组合查询

     

    【前言】

    第一次听说组合查询还是在龙哥、伟强的分享会上,才知道有这么个东西的。后来看网上的博客,感觉好难啊,逻辑什么的,完全没有,还记得那天下午我闷头看了好几个小时的博客,也没搞明白组合查询是个什么,后来硬着头皮写需求,硬敲;再后来看学生信息管理系统的代码,发现学生中的查询窗体,checkbox就用到了组合查询,觉得真是 so easy 啊!但当时根本没印象,看不懂代码自然也不会疑惑为什么会有相连的两个txtSQL,只是盲目的照着书本敲。现在进行到机房的组合查询,感觉自己对组合查询明白了甚多,接下来小编带大家了解机房收费系统中——组合查询那些事儿!

     

    【正文】

    首先

    首先要明白这个窗体是怎么进行查询的,要明白客户的需求是什么,没有客户自己就是客户。其实它就是一个查询窗体,选择不同的查询条件,查询出符合条件的结果。机房收费系统中设计到组合查询的有三个窗体:【学生信息基本维护】、【操作员工作记录】 以及学生上下机状态管理中的【查询部分学生上机状态】,页面是这样的

     

    其次

    其次要理清这些个下拉框、文本框之间的逻辑关系,之间查询的先后关系是什么,下面分享一下:

    我的需求分析:

    • 选择字段名、操作符、要查询的内容、组合关系,点击查询按钮:
    •  
    • 若第一行条件为空:则提示请把第一行数据补充完整,第二三行条件及第二个关系不可用;
    • 若第一行条件不为空:若第一个关系为空,则查询第一行条件中数据;若第一个关系不为空,则判断第二行条件是否为空:
    •  
    • 若第二行条件为空,则提示请把第二行数据补充完整,第三行条件不可用;
    • 若第二行条件不为空:若第二个关系为空,则查询第一二行条件中数据;若第二个关系不为空,则判断第三行条件是否为空;
    •  
    • 若第三行条件为空,则提示请把第三行数据补充完整;
    • 若第三行条件不为空:则查询第一二三行条件中数据。

    流程图:

    以【学生信息基本维护】为例:

     

    最后

    最后才是编写代码,前期的思路一定要理清,这是写代码的基础,有了逻辑,代码的编写也是so easy啦!下面以【查询部分学生上机状态】窗体进行代码分享:

    组合查询基本代码:

    txtSQL = "select * from 表名称 where"  
    txtSQL = txtSQL & " " & fieldname(条件) & " " & fieldname(操作符) & "'" & 要查询的内容 & "'"  
    

    查询按钮Click事件:

    '判断第一行条件是否为空
    If Trim(col1.Text) = "" Or fuhao1.Text = "" Or txt1.Text = "" Then
        MsgBox "请把第一行数据补充完整!"
        '第二、三行文本框不可用,第二个关系不可用
        col2.Enabled = False
        col3.Enabled = False
        fuhao2.Enabled = False
        fuhao3.Enabled = False
        txt2.Enabled = False
        txt3.Enabled = False
        Relation2.Enabled = False
    Else
        txtSQL = "select * from Line_Info where " & filedname(col1.Text) & fuhao1.Text & "'" & txt1.Text & "'"
        '判断第一个关系是否为空
        If Relation1.Text = "" Then
            '查询满足第一行文本框的数据
            Set mrc = ExecuteSQL(txtSQL, MsgText)
            Call viewdata
            MsgBox "数据查询成功!"
        Else
            '判断第二行条件是否为空
            If Trim(col2.Text) = "" Or fuhao2.Text = "" Or txt2.Text = "" Then
                MsgBox "请把第二行数据补充完整!"
                '第三行文本框不可用
                col3.Enabled = False
                fuhao3.Enabled = False
                txt3.Enabled = False
            Else
                '判断第二个关系是否为空,
                If Relation2.Text = "" Then
                    txtSQL = txtSQL & filedname(Relation1.Text) & filedname(col2.Text) & fuhao2.Text & " '" & txt2.Text & "'"
                    Set mrc = ExecuteSQL(txtSQL, MsgText)
                    Call viewdata
                    MsgBox "数据查询成功!"
                Else
                    '判断第三行条件是否为空
                    If Trim(col3.Text) = "" Or fuhao3.Text = "" Or txt3.Text = "" Then
                        MsgBox "请把第三行数据补充完整"
                    Else
                        txtSQL = txtSQL & filedname(Relation2.Text) & filedname(col3.Text) & fuhao3.Text & "'" & txt3.Text & "'"
                        Set mrc = ExecuteSQL(txtSQL, MsgText)
                        Call viewdata
                        MsgBox "数据查询成功!"
                    End If
                End If
           End If
        End If
    End If
    End Sub
    

    filedname过程:

    Public Function filedname(a As String) As String
        Select Case a
            Case "卡号"
                filedname = "CardNo"
            Case "学号"
                filedname = "StudentNo"
            Case "上机日期"
                filedname = "OnDate"
            Case "上机时间"
                filedname = "OnTime"
            Case "下机日期"
                filedname = "OffDate"
            Case "下机时间"
                filedname = "OffTime"
            Case "消费金额"
                filedname = "ConsumeCash"
            Case "余额"
                filedname = "Cash"
            Case "与"
                filedname = " And "
            Case "或"
                filedname = " Or "
        End Select 
    End Function

    【结束语】

    有些事经历了,才会懂。有些痛,受过了,才会坚强……哈哈画风突变~有些东西,千万不要被它的表面所唬住,相信自己,你可以的,组合查询,就是这么简单!

  • 相关阅读:
    缺陷管理、分类、提交
    selenium2.0处理case实例(二)
    Robot Framework自动化测试(六)--- robotremoteserver使用
    Robot Framework自动化测试(五)--- 开发系统关键字
    Robot Framework自动化测试(四)--- 分层思想
    Robot Framework自动化测试(三)---Selenium API
    Robot Framework自动化测试(二)---元素定位
    Robot Framework自动化测试(一)---第一个脚本
    python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告
    Python 基于http接口自动化测试
  • 原文地址:https://www.cnblogs.com/txge/p/13973634.html
Copyright © 2011-2022 走看看