【机房收费系统】组合查询(1)

本文详细介绍了机房收费系统中的组合查询实现方法,包括条件判断、字段和关系的翻译函数,以及根据不同字段显示相应控件的过程。通过具体代码示例,展示了如何处理多行查询条件,为读者提供了清晰的实现思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

组合查询是机房三大难点之一,现在我就拿学生基本信息维护来说,还有学生上机统计信息查询和操作员工作记录窗体和学生基本信息维护死里都是一样的,我就不一一阐述了。组合查询在学生收费系统的时候也出现过 ,checkbox就用到了组合查询,也是查询窗体。只不过当时就是比较浅,用的不是特别多。联系之前用到的,现在想想组合查询也不是很难。

本窗体我没有画流程图,下面来说说我的思路吧!


 

先判断三行条件是否输入完整

若第一行条件为空:则提示请把第一行查询条件输入完整,第二三行条件为空
若第一行条件不为空:若第一个关系为空,则查询第一行条件中数据;若第一个关系不为空,则判断第二行条件是否为空:
 
若第二行条件为空,则提示请把第二行查询条件输入完整,第三行条件为空;
若第二行条件不为空:若第二个关系为空,则查询第一二行条件中数据;若第二个关系不为空,则判断第三行条件是否为空;
 
若第三行条件为空,则提示请把第三行查询条件输入完整;
若第三行条件不为空,第一行条件为空,则查询第二三行条件中数据

若三行条件都不为空,则查询一二三行条件的数据

下面来分享一下代码:

模块定义1个函数过程,在这里进行翻译,因为数据库     工作时是英文(以后窗体来调用):

字段:


Public Function Field(a As String) As String

  Select Case a
    '定义一个函数过程因为数据库在进行工作时使用英文,在这里进行翻译
    Case "卡号"
        Field = "cardno"
    Case "姓名"
        Field = "studentname"
    Case "学号"
        Field = "studentno"
    Case "上机日期"
        Field = "ondate"
    Case "上机时间"
        Field = "ontime"
    Case "下机日期"
       Field = "offdate"
    Case "下机时间"
       Field = "offtime"
    Case "消费金额"
        Field = "consume"
    Case "余额"
        Field = "cash"
    Case "备注"
        Field = "status"
    Case "教师"
        Field = "userID"
    Case "注册日期"
        Field = "logindate"
    Case "注册时间"
        Field = "logintime"
    Case "注销日期"
        Field = "logoutdate"
    Case "注销时间"
        Field = "logouttime"
    Case "机器名"
        Field = "computer"
    Case "性别"
        Field = "sex"
    Case "年级"
        Field = "grade"
    Case "班级"
        Field = "class"
    Case "系别"
        Field = "department"
    End Select
End Function

关系:


Public Function relation(i As String) As String
Select Case i
    Case "与"
    relation = "and"
    Case "或"
    relation = "or"
End Select
End Function

清空控件内容:



Rem:清空控件内容
Private Sub cmdclear_Click()

    Dim ctrl As Control
    For Each ctrl In Me.Controls
        If TypeOf ctrl Is TextBox Then
            ctrl.Text = ""
        ElseIf TypeOf ctrl Is ComboBox Then
            ctrl.Text = ""
        End If
    Next
    '清表格,还原加载的第一行
    MSHFlexGrid1.rows = 1
    MSHFlexGrid1.rows = MSHFlexGrid1.rows + 1

End Sub

根据不同的字段显示不同的控件和符号(用的textbox和dtpicker)可以更方便的来选择日期 (用的控件数组)


Rem:根据不同的字段显示不同的控件
Private Sub combo1_click(Index As Integer)
    Dim i As Integer
    Dim j As Integer
    i = Index
    If Trim(combo1(i).Text) = "卡号" Or Trim(combo1(i).Text) = "姓名" Or Trim(combo1(i).Text) = "学号" Or Trim(combo1(i).Text) = "金额" Or Trim(combo1(i).Text) = "年级" Or Trim(combo1(i).Text) = "班级" Or Trim(combo1(i).Text) = "性别" Or Trim(combo1(i).Text) = "系别" Or Trim(combo1(i).Text) = "类型" Or Trim(combo1(i).Text) = "备注" Then
        comboS1(i).Clear
        comboS1(i).AddItem "="
        comboS1(i).AddItem "<>"
    Else
         comboS1(i).Clear
        comboS1(i).AddItem "="
        comboS1(i).AddItem "<>"
        comboS1(i).AddItem ">"
        comboS1(i).AddItem "<"
    End If
    
    txtIC1(i).Text = ""
     '如果字段名是时间日期,则使用时间日期控件
   For i = 0 To 2
    If combo1(i).Text = "上机日期" Or combo1(i).Text = "下机日期" Then
        DTPicker1(i).Format = dtpLongDate
        DTPicker1(i).Visible = True
        txtIC1(i).Visible = False
    Else
        If combo1(i).Text = "上机时间" Or combo1(i).Text = "下机时间" Then
            DTPicker1(i).Format = dtpTime     '定义日期格式
            DTPicker1(i).Visible = True
             txtIC1(i).Visible = False
        Else
            DTPicker1(i).Visible = False
             txtIC1(i).Visible = True
        End If
    End If
    Next i

具体的查询点击链接:https://mp.youkuaiyun.com/postedit?not_checkout=1【机房收费系统】组合查询(2)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值