趣味组合查询——机房收费

这两天实现了组合查询的基本功能,发现很多有意思的事儿。大家一起来看看是不是很有趣!

【趣味一】代码的复用

“多个不同的事件过程需要执行一段相同的程序代码,完成相同或相似的任务,为了避免程序代码的重复,也便于程序的修改,可以把这一段代码独立出来,作为一个过程,这样的过程称为通用过程,该过程独立于事件过程,可供事件过程和其他通用过程调用。”——此段话出自《VB程序设计》P168页,有兴趣的同学可以再次深入的研究一下。

实例一:窗体模块

</pre><pre name="code" class="vb"><span style="font-size:18px;">Public Function tianjia()                   '自定义函数,当查询成功后,调用此函数,显示数据库内容
Set mrc = ExecuteSQL(txtSQL, Msgtext)       '在line表中查询记录
With myflexgrid                             '在grid控件中加载字段
    .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) = "备注"
    
    Do While Not mrc.EOF
        .Rows = .Rows + 1                   '在grid控件中显示数据库数据
        .CellAlignment = 4
        .TextMatrix(.Rows - 1, 0) = Trim(mrc.Fields(1))     'trim函数目的是使grid表格内容显示完整。
        .TextMatrix(.Rows - 1, 1) = Trim(mrc.Fields(3))
        .TextMatrix(.Rows - 1, 2) = Format(mrc.Fields(6), "yyyy-mm-dd")
        .TextMatrix(.Rows - 1, 3) = Format(mrc.Fields(7), "hh:mm:ss")
        .TextMatrix(.Rows - 1, 4) = Format(mrc.Fields(8), "yyyy-mm-dd")
        .TextMatrix(.Rows - 1, 5) = Format(mrc.Fields(9), "hh:mm:ss")
        .TextMatrix(.Rows - 1, 6) = Trim(mrc.Fields(11))
        .TextMatrix(.Rows - 1, 7) = Trim(mrc.Fields(12))
        .TextMatrix(.Rows - 1, 8) = Trim(mrc.Fields(13))
        mrc.MoveNext                        '查询下一条记录
    Loop
    mrc.Close                               '关闭数据库记录集
End With

End Function
</span>

此段代码是直接写在窗体中的,不用放在模块中,因为这个代码的使用范围只是在一个窗体中。执行查询的时候,直接一句话:call tianjia(过程名),是不是很管用啊?


实例二:标准模块

</pre><pre name="code" class="vb"><span style="font-size:18px;">Public Function Field(strfilename As String) As String
    '选项转化成数据库字段
        Select Case strfilename
            Case "学号"
                Field = "studentNo"
            Case "姓名"
                Field = "studentName"
            Case "卡号"
                 Field = "cardno"
            Case "系别"
                Field = "department"
            Case "年级"
                Field = "grade"
            Case "班级"
                Field = "class"
            Case "性别"
                Field = "sex"
            Case "与"
                Field = "and"
            Case "或"
                Field = "or"
            Case "状态"
                Field = "status"
            Case "备注"
                Field = "explain"
            Case "日期"
                Field = "date"
            Case "时间"
                Field = "time"
            Case "金额"
                Field = "cash"
            Case "类型"
               Field = "type"
            Case "教师"
                Field = "UserID"
            Case "注册日期"
                Field = "LoginDate"
            Case "注册时间"
                Field = "LoginTime"
            Case "注销时间"
                Field = "LogoutDate"
            Case "注销时间"
                Field = "LogoutTime"
            Case "机器名"
                Field = "computer"
        End Select
End Function
</span>
在模块中写入以上代码,作用是每当组合查询的时候都要将combox选项字段转化为数据库中的字段名称,这样在查询语句的时候,字段作为条件就可以直接在数据库中查找数据了。模块的适用范围是将多个窗体中相同的过程,抽取出来并得到复用。并在所需要的窗体写一下查询语句中,实现调用。

<span style="font-size:18px;">txtSQL = txtSQL & Field(com01.Text) & com02.Text & "'" & txt03.Text & "'"</span>

在这里,我们把窗体模块和模块作了一个简单的介绍,一样的是都是代码的复用,不一样的是写入代码的位置不同,最重要的是实现功能。实现通用过程的优点是,减少代码,便于修改。这些优点都为我们节省了很多的时间,使我们的效率得到提升。

【趣味二】流程图

在流程图的帮助,代码也就跟上了脚步。为什么这么说呢?每一步流程,代表的就是身后代码的支持。最后实现最后的功能,并且不至于一头雾水,我就在这里吃了亏,后来一直都停步不前,直到理清思路,代码问题也就迎刃而解了。那大家先来看一下我的流程图吧。



【趣味三】正常思维

实现了查询功能,可就是看着别扭,听了师父的建议,我才思考到了这一点,正常人的思维。

实例一:

首先,我们需要的只是第一行查询条件,二、三行都不可用。

查询第一行输入之后,判断组合关系是否为空,如果为空的话,直接出现查询结果;否则,提示“输入第二行查询内容”。

同理,判断第二个组合关系。


实例二:

性别只有男女,这样的话,只有 = 或 <> ,

<span style="font-size:18px;"> </span>
<span style="font-size:18px;">If Combo1.Text = "姓名" Or Combo1.Text = "性别" Then  '如果是姓名或性别,操作符为<> =
        Combo2.Clear

        Combo2.AddItem "="

        Combo2.AddItem "<>"

 Else								'其他情况操作符为<, > , <>, =

<span style="white-space:pre">	</span>Combo2.Clear

        Combo2.AddItem "="

        Combo2.AddItem "<"

        Combo2.AddItem ">"

        Combo2.AddItem "<>"

End If

End Sub</span>
想法很重要,用户需求很很重要,为人民服务的准则。

【趣味总结】

虽说是趣味,又何尝不是我们在做组合查询这一功能时,需要特别注意的啊。就像趣味一,就是一些课本知识的运用,所以,知识需要我们不断的重复,不断回顾,每次都会是新收获。以小见大,学习就是一个不断总结的过程,每学新知识都是不断重复旧知识。知识从何而来呢?实践出真知,趣味学习,乐学,我们要一点点的向着这一目标靠近。

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨倩-Yvonne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值