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

简介: 【机房收费系统——组合查询】

先来说说我们普遍存在的一种心理,就是我们看到组合查询的那个界面的时候我们当时就被自己给打死了,我们的第一反应就是这是个什么东西,这么多的框框,所以就给组合查询蒙上了一层 “很难”的面纱,但是当我们仔细想想我们好像在那见过这样的知识。仔细想想,,,,,,终于在记忆深处找到了一点安慰,那就是学生信息管理系统中的这个界面(回忆旧识):

20140826202930627.png20140826203320493.png



相当这我们的心情应该大好啊!这就给我们提供了很好的思路,这就是个小组合查询啊。下面说说我的组合查询思路:

   

20140826212734019.jpg

最后两个组合框是选择组合关系的(与  或),同时在我的代码中它们关系着它们下面的控件是否可以为空。也就是说如果我们查询的包含一个条件,我们应该填写在第一行中,如果我们选择了一个组合关系的文本框中,那么下面的控件框就不能为空,具体代码如下:

 

   txtSQL = "select * from line_Info where "
    '判断字段的选择是否为空
    If combfiled(0).Text = "" Then
        MsgBox "请选择字段!", vbOKOnly + vbExclamation, "警告"
        combfiled(0).SetFocus
        Exit Sub
    End If
                                             '判断操作符的选择是否为空
    If comboperate(0).Text = "" Then
        MsgBox "请选择操作符!", vbOKOnly + vbExclamation, "警告"
        comboperate(0).SetFocus
        Exit Sub
    End If
    '判断要查询的内容是否为空
    If txtcontent(0).Text = "" Then
        MsgBox "请在输入要查询的内容", vbOKOnly + vbExclamation, "警告"
        txtcontent(0).SetFocus
        Exit Sub
    End If
    txtSQL = txtSQL & ZhuangHuan(combfiled(0).Text) & " " & comboperate(0).Text & "'" & txtcontent(0).Text & "'"
    '利用模版函数查看是否是组合查询第一行为空时,查询无效
    '开始组合查询
    If Trim(combrelation(0).Text <> "") Then
        If Trim(combfiled(1).Text) = "" Or Trim(comboperate(1).Text) = "" Or Trim(txtcontent(1).Text) = "" Then
            MsgBox "您选择了组合关系,请输入数据之后再查询", vbOKOnly, "提示信息"
            Exit Sub
        Else
            txtSQL = txtSQL & ZhuangHuan(combrelation(0).Text) & " " & ZhuangHuan(combfiled(1).Text) & comboperate(1).Text & "'" & Trim(txtcontent(1).Text) & "'"
        End If
    End If
    If Trim(combrelation(1).Text) <> "" Then
        If Trim(combfiled(2).Text) = "" Or Trim(comboperate(2).Text) = "" Or Trim(txtcontent(2).Text) = "" Then
            MsgBox "您选择了第二个组合,请输入数据之后在查询", vbOKOnly, "提示"
            Exit Sub
        Else
            txtSQL = txtSQL & ZhuangHuan(combrelation(1).Text) & " " & ZhuangHuan(combfiled(2).Text) & comboperate(2).Text & "'" & Trim(txtcontent(2).Text) & "'"
        End If
    End If
                                                 '开始进行查找
    Set mrc = ExecuteSQL(txtSQL, MsgText

到这我们的查询的主要代码就可以了。


当然这样我们的代码还是不能运行,因为我们的组合框中是填写的汉字所以我们需要一个转换函数,把我们控件框中的汉字转换成符号.

Public Function ZhuangHuan(StrZhuangHuan As String) As String
    Select Case StrZhuangHuan
    Case "卡号"
        ZhuangHuan = "cardno"
    Case "姓名"
        ZhuangHuan = "studentname"
    Case "上机日期"
        ZhuangHuan = "ondate"
    Case "上机时间"
        ZhuangHuan = "ontime"
    Case "下机日期"
        ZhuangHuan = "offdate"
    Case "下机时间"
        ZhuangHuan = "offtime"
    Case "消费金额"
        ZhuangHuan = "consume"
    Case "余额"
        ZhuangHuan = "cash"
    Case "与"
        ZhuangHuan = "and"
    Case "备注"
        ZhuangHuan = "status"
    Case "或"
        ZhuangHuan = "or"
    End Select
End Functio

下面是我们这个窗体中一些需要我们在优化的时候需要注意的事情,像我们在按日期查询的时候,我们的格式必须正确,如果不按正确的格式就会报错。这就需要下面的代码来给我们增加提示:

                          '判断日期和时间的格式是否正确
    If combfiled(0).Text = "上机日期" Or combfiled(0).Text = "上机时间" Or combfiled(0).Text = "下机日期" Or combfiled(0).Text = "下机时间" Then
        If Not IsDate(txtcontent(0).Text) Then
            MsgBox "请输入正确的日期或时间格式", vbOKOnly + vbExclamation, "提示"
                Exit Sub
            End If
        End If
    If combfiled(1).Text = "上机日期" Or combfiled(1).Text = "上机时间" Or combfiled(1).Text = "下机日期" Or combfiled(1).Text = "下机时间" Then
    If Not IsDate(txtcontent(1).Text) Then
        MsgBox "请输入正确的日期或时间格式", vbOKOnly + vbExclamation, "提示"
            Exit Sub
        End If
    End If
If combfiled(2).Text = "上机日期" Or combfiled(2).Text = "上机时间" Or combfiled(2).Text = "下机日期" Or combfiled(2).Text = "下机时间" Then
    If Not IsDate(txtcontent(2).Text) Then
        MsgBox "请输入正确的日期或时间格式", vbOKOnly + vbExclamation, "提示"
            Exit Sub
        End If
    End I


这还有一个很重要的问题值得我们了解:就是当我们查询卡号的时候当我们输入的内容是一位数的时候,我们总是能查出我们需要的正确的结果,但是当我们输入多位数的时候就会出错了,比如下面这种情况:


当我们查询的条件是小于3的时候,像12  24等第一位小于3的所有数都会出现:出现这种问题的原因是:卡号是字符型的数据,在比较的时候比的是ASCII码的的大小,并且只要有好符合条件的数字就不会再往后比较。其余的就是一些很小的问题,需要我们自己细心的修改。


小结:


其实当我们有了学生中的那个基础,到这我们就可以用一句话来概括,就是字符串 的拼接,之中出现的错误没有什么难的逻辑错误,都是我们的SQL语句出现错误,只有我们有足够的耐心和细心,我们会很轻松的搞定这个问题。

目录
相关文章
|
Java 编译器 数据安全/隐私保护
自定义注解与AOP结合使用
自定义注解与AOP结合使用
219 0
|
存储 Linux 调度
KVM 虚拟化的功能特性
【10月更文挑战第13天】虚拟化技术创建实体资源的虚拟版本,提升资源利用率。KVM(Kernel-based Virtual Machine)作为全虚拟化解决方案,借助Linux内核实现Hypervisor功能,通过模块化方式提供高效的虚拟化环境。
|
机器学习/深度学习 人工智能 前端开发
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
使用TensorFlow.js在浏览器中进行情感分析是一个非常实用的应用场景。TensorFlow.js 是一个用于在JavaScript环境中训练和部署机器学习模型的库,使得开发者能够在客户端直接运行复杂的机器学习任务。对于情感分析,我们可以使用预先训练好的模型来识别文本中的积极、消极或中性情感。
473 4
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
|
前端开发
react中使用Modal.confirm数据不更新的问题解决
文章讨论了在React中使用Ant Design的`Modal.confirm`时更新数据不生效的问题,并提供了解决方案。原因是React状态更新可能是异步的,导致Modal的内容更新后不会立即反映在UI上。解决办法是在状态更新后使用`useEffect`钩子来调用Modal实例的`update`方法,从而更新Modal的内容。
535 0
react中使用Modal.confirm数据不更新的问题解决
|
存储 数据可视化 Linux
在Linux中,如何使用ELK进行日志管理和分析?
在Linux中,如何使用ELK进行日志管理和分析?
|
SQL 数据采集 DataWorks
DataWorks产品使用合集之如何预估费用
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
200 1
|
应用服务中间件 nginx Windows
ffmpeg推流到nginx服务器,并使用vlc播放rtmp视频
ffmpeg推流到nginx服务器,并使用vlc播放rtmp视频
1006 0
|
数据可视化 数据挖掘 数据处理
数据科学手把手:碳中和下的二氧化碳排放分析 ⛵
气候是全球性的话题,本文基于owid co2数据集,分析了世界各地的二氧化碳排放量,并将二氧化碳排放的主要国家以及二氧化碳排放来源进行了可视化。
2547 1
数据科学手把手:碳中和下的二氧化碳排放分析 ⛵
|
前端开发
前端学习案例2-ES6中的proxy和Reflect2
前端学习案例2-ES6中的proxy和Reflect2
180 0
前端学习案例2-ES6中的proxy和Reflect2

热门文章

最新文章