机房收费系统之组合查询

由开始的头脑无措,到现在的玩转。确实是需要经历的。

这个组合查询在操作员和一般用户中多次用到,之前在学生也碰到过选择查询,但是用的check控件,查询也比较单一。而在机房用到的组合查询是用combo控件进行的多行条件查询,也是学习到一个新技能。

下面是关于组合查询的流程图:


一:流程图


1学生信息组合查询:



2上机统计信息组合查询流程图




3收取金额记录组合查询流程图:




二:过程


这里拿学生查询记录组合查询为例:

1首先要对combo进行设置,可选择项,代码如下:

 Dim i, j, k
    For i = 0 To 2
        With Combofieldname1(i)
            .AddItem "卡号"
            .AddItem "学号"
            .AddItem "姓名"
            .AddItem "系别"
            .AddItem "性别"
            .AddItem "上机日期"
            .AddItem "上机时间"
            
        End With
     
    Next i
    
    For j = 0 To 2
        With Combooperation1(j)
            .AddItem "="
            .AddItem "<"
            .AddItem ">"
            .AddItem "<>"
        End With
    Next j
    
    For k = 0 To 1
        With Combo7(k)
            .AddItem "与"
            .AddItem "或"
        End With
    Next k




2这里要对后两行进行输入限制,只有当选择了组合查询之后,才可以进行多行选择,否则只查询第一行。



 '判断如果组合查询没有选择,则下面一排的控件不可选
    
    If Combo7(0).Text = "" Then
        Combofieldname1(1).Enabled = False
        Combofieldname1(2).Enabled = False
        Combooperation1(1).Enabled = False
        Combooperation1(2).Enabled = False
        txtinquire1(1).Enabled = False
        txtinquire1(2).Enabled = False
        Combo7(1).Enabled = False
    Else
    
        If Combo7(1).Text = "" Then
            Combofieldname1(2).Enabled = False
            Combooperation1(2).Enabled = False
        Else
    
    '若组合查询选择了,则激活下面一排控件的可选权
       End If



3这里选择了组合查询,也就是组合查询combo的单击事件。所以对组合查询控件进行代码限制。



 If Combo7(0).Text <> Trim("") Then
        Combofieldname1(1).Enabled = True
        Combooperation1(1).Enabled = True
        Combo7(1).Enabled = True
        txtinquire1(1).Enabled = True
    End If
    
    If Combo7(1).Text <> Trim("") Then
        Combofieldname1(2).Enabled = True
        Combooperation1(2).Enabled = True
        txtinquire1(2).Enabled = True
    End If




4我们这里对combo设置的语言是汉字,但是计算机是看不懂Chinese的。所以要进行语言的“翻译”



Public Function field(qq As String) As String
    Select Case qq
        Case "卡号"
            field = "cardno"
        Case "学号"
            field = "studentno"
        Case "姓名"
            field = "studentname"
        Case "系别"
            field = "department"
        Case "性别"
            field = "sex"
        Case "上机日期"
            field = "ondate"
        Case "上机时间"
            field = "ontime"
        Case "与"
            field = "and"
        Case "或"
            field = "or"
    End Select
End Function

5准备工作做好了,下面就要进行查询。和以往一样,先对其进行判空。


If Combofieldname1(0).Text = "" Then
        MsgBox "请选择字段名!", vbOKOnly + vbExclamation, "警告"
        Combofieldname1(0).SetFocus
    Else
        
        If Combooperation1(0).Text = "" Then
            MsgBox "请选择操作符!", vbOKOnly + vbExclamation, "警告"
            Combooperation1(0).SetFocus
        Else
       
            If txtinquire1(0).Text = "" Then
                MsgBox "请输入查询内容!", vbOKOnly + vbExclamation, "警告"
                txtinquire1(0).SetFocus
            Else


'第二行
                
                    If Combofieldname1(1).Text = "" Then
                        MsgBox "请选择第二行字段名!", 48, "提示"
                        Combofieldname1(1).SetFocus
                        Exit Sub
                    ElseIf Combooperation1(1).Text = "" Then
                        MsgBox "请选择第二行操作符!", 48, "提示"
                        Combooperation1(1).SetFocus
                        Exit Sub
                    ElseIf txtinquire1(1).Text = "" Then
                        MsgBox "请输入第二行要查询的内容!", 48, "提示"
                        txtinquire1(1).SetFocus
                        Exit Sub
                    Else


6大家可以看到,如果是三行的话,重复度相当高。并且感觉很笨重。所以可以对其有一句简单的命令:


'查询第一行
    
    '判空
    
    If Trim(Combo1(0).Text) = "" Or Trim(Combo2(0).Text) = "" Or Trim(Text1(0).Text) = "" Then
        MsgBox "请选择您所查询的信息", 48, "提示"
        Exit Sub
    Else

'查询第二行
                
                    If Trim(Combo1(1).Text) = "" Or Trim(Combo2(1).Text) = "" Or Trim(Text1(1).Text) = "" Then
                        MsgBox "请选择您所查的信息", 48, "提示”"
                        Exit Sub
                    Else



7若不为空,则进行查询判断,是否存在:

txtSQL = "select * from line_Info where " & field(Combofieldname1(0).Text) & Trim(Combooperation1(0).Text) & "'" & Trim(txtinquire1(0).Text) & "'"
            Set mrc = ExecuteSQL(txtSQL, MsgText)
            
            If mrc.EOF Then
                MsgBox "该条件的数据不存在", 48, "提示"
                'Exit Sub
            Else
            
                If Combo7(0).Text = "" Then
                    GoTo case1
                Else

8这里的goto case1算是对信息显示的一个地点标识粗鲁理解为:如果存在,则去case1:


case1:
                
            With MSHFlexGrid1
                .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) = "下机时间"
                .TextMatrix(0, 9) = "消费金额"
                
                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(2))
                    .TextMatrix(.Rows - 1, 2) = Trim(mrc.Fields(3))
                    .TextMatrix(.Rows - 1, 3) = Trim(mrc.Fields(4))
                    .TextMatrix(.Rows - 1, 4) = Trim(mrc.Fields(5))
                    .TextMatrix(.Rows - 1, 5) = Trim(mrc.Fields(6))
                    .TextMatrix(.Rows - 1, 6) = Trim(mrc.Fields(7))
                    .TextMatrix(.Rows - 1, 7) = Trim(mrc.Fields(8))
                    .TextMatrix(.Rows - 1, 8) = Trim(mrc.Fields(9))
                    .TextMatrix(.Rows - 1, 9) = Trim(mrc.Fields(11))
                    mrc.MoveNext
                Loop
            End With
            End If



9这里要注意一句:mrc.movenext

如有遗失,后果自负。偷笑


组合查询总结到此结束:一定要缕清你的脑子哦






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
水资源是人类社会的宝贵财富,在生活、工农业生产中是不可缺少的。随着世界人口的增长及工农业生产的发展,需水量也在日益增长,水已经变得比以往任何时候都要珍贵。但是,由于人类的生产和生活,导致水体的污染,水质恶化,使有限的水资源更加紧张。长期以来,油类物质(石油类物质和动植物油)一直是水和土壤中的重要污染源。它不仅对人的身体健康带来极大危害,而且使水质恶化,严重破坏水体生态平衡。因此各国都加强了油类物质对水体和土壤的污染的治理。对于水中油含量的检测,我国处于落后阶段,与国际先进水平存在差距,所以难以满足当今技术水平的要求。为了取得具有代表性的正确数据,使分析数据具有与现代测试技术水平相应的准确性和先进性,不断提高分析成果的可比性和应用效果,检测的方法和仪器是非常重要的。只有保证了这两方面才能保证快速和准确地测量出水中油类污染物含量,以达到保护和治理水污染的目的。开展水中油污染检测方法、技术和检测设备的研究,是提高水污染检测的一条重要措施。通过本课题的研究,探索出一套适合我国国情的水质污染现场检测技术和检测设备,具有广泛的应用前景和科学研究价值。 本课题针对我国水体的油污染,探索一套检测油污染的可行方案和方法,利用非分散红外光度法技术,开发研制具有自主知识产权的适合国情的适于野外便携式的测油仪。利用此仪器,可以检测出被测水样中亚甲基、甲基物质和动植物油脂的污染物含量,为我国众多的环境检测站点监测水体的油污染状况提供依据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值