【机房收费系统】封装函数过程
2017-01-07 17:17
204 查看
前言:
机房验收的时候,王雷师父浏览我的代码,发现一个重复的功能,我都是很长的一段代码,于是,他示范了一下,怎样写一个函数过程来简化代码!对比:
首先大家来看我的原始代码:'只用第三行查询的情况 txtSQLc = "select * From worklog_Info where level='管理员' & " & FieldName(Namecombo3.Text) & FieldName(Actcombo3.Text) & "'" & Trim(Text3.Text) & "'" Set mrcc = ExecuteSQL(txtSQLc, Msgtexta) If mrcc.EOF Then MsgBox "没有记录!", vbOKOnly + vbExclamation, "提示" Exit Sub End If '判断是否移动到数据集对象的最后一条记录 Do While Not mrcc.EOF .CellAlignment = 1 .TextMatrix(.Rows - 1, 0) = Trim(mrcc.Fields(0)) .TextMatrix(.Rows - 1, 1) = Trim(mrcc.Fields(1)) .TextMatrix(.Rows - 1, 2) = Trim(mrcc.Fields(2)) .TextMatrix(.Rows - 1, 3) = Trim(mrcc.Fields(3)) .TextMatrix(.Rows - 1, 4) = Trim(mrcc.Fields(4)) .TextMatrix(.Rows - 1, 5) = FieldName(IsNull(mrca.Fields(5))) .TextMatrix(.Rows - 1, 6) = FieldName(IsNull(mrca.Fields(6))) .TextMatrix(.Rows - 1, 7) = Trim(mrcc.Fields(7)) .TextMatrix(.Rows - 1, 8) = Trim(mrcc.Fields(8)) '移动到下一条记录 mrcc.MoveNext .Rows = .Rows + 1 '预留空间给下一条记录 Loop .Rows = .Rows - 1 '将最后增加的空行删除 Exit Sub End If
它的作用是在表格控件中,相应位置上显示数据库中相应的内容,尽管都是实现这个功能,但是每个表格要显示的内容不同,来源的数据表不同,所以,我就不厌其烦的将这段功能代码在整个系统中重复了几十次。。。
而师父给我的示例呢:
'只用第三行查询的情况 txtSQLc = "select * From worklog_Info where " & FieldName(Namecombo3.Text) & FieldName(Actcombo3.Text) & "'" & Trim(Text3.Text) & "'" Set mrcc = ExecuteSQL(txtSQLc, Msgtexta) If mrcc.EOF Then MsgBox "没有记录!", vbOKOnly + vbExclamation, "提示" Exit Sub End If Call Show_table(mrcc) Exit Sub End If
超级简洁!
函数的思想就是把一个常用的功能封装起来,所有不同的地方,比如数据库列名,数据记录等,用参数表示。需要该功能时,直接调用一个函数加上参数就okay啦!简直就是以一敌百的效果啊!
step 1:声明函数,包括参数类型
Public Function Show_table(mrc1 As ADODB.Recordset)
step 2:利用参数将整个过程完整写下来
With MSFlexGrid .Rows = 2 .Cols = 9 .ColWidth(0) = 1800 .ColWidth(3) = 1800 .ColWidth(4) = 1800 .ColWidth(5) = 1800 .ColWidth(6) = 1800 .ColWidth(7) = 1800 .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 mrc1.EOF If IsNull(mrc1.Fields(5)) = True Then mrc1.Fields(5) = "" End If If IsNull(mrc1.Fields(6)) = True Then mrc1.Fields(6) = "" End If .CellAlignment = 1 .TextMatrix(.Rows - 1, 0) = Trim(mrc1.Fields(0)) .TextMatrix(.Rows - 1, 1) = Trim(mrc1.Fields(1)) .TextMatrix(.Rows - 1, 2) = Trim(mrc1.Fields(2)) .TextMatrix(.Rows - 1, 3) = Trim(mrc1.Fields(3)) .TextMatrix(.Rows - 1, 4) = Trim(mrc1.Fields(4)) .TextMatrix(.Rows - 1, 5) = Trim(mrc1.Fields(5)) .TextMatrix(.Rows - 1, 6) = Trim(mrc1.Fields(6)) .TextMatrix(.Rows - 1, 7) = Trim(mrc1.Fields(7)) .TextMatrix(.Rows - 1, 8) = Trim(mrc1.Fields(8)) '移动到下一条记录 mrc1.MoveNext .Rows = .Rows + 1 '预留空间给下一条记录 Loop .Rows = .Rows - 1 '将最后增加的空行删除 End With
step 3:编写结束函数过程语句
Exit Function End Function
step 4:采用调用函数的方式,修改原来代码的相应功能部分
Call Show_table(mrcc)
step 5:run and debug
如此简单,一个函数就KO了我的啰嗦代码。。。
小结:
实现该功能时,想过调用函数,可是写了没两句就卡壳了,不知道要设计个什么类型的变量,反正繁冗的代码也能实现,于是就放弃了学习的机会。师父就是师父,不能让我得过且过,这样我又学会了一招,大家也找机会试试呗!相关文章推荐
- 机房收费系统—封装函数
- 机房收费系统中——存储过程中加入事务,实现学生注册
- 机房收费系统——函数
- 机房收费系统重构之存储过程的使用
- VB.net版机房收费系统——属性过程
- 机房收费系统中——存储过程中加入事务,实现学生注册
- 机房收费系统重构之存储过程的使用
- 机房收费系统中——存储过程中加入事务,实现学生注册
- 【机房收费系统】——存储过程之字符串拼接
- 机房收费系统之Environ函数
- 图解机房收费系统报表制作的全过程
- 机房收费系统(VB.NET)——超详细的报表制作过程
- 机房收费系统之下机过程
- 机房收费系统安装过程
- 机房收费系统---工程过程的图
- 图解机房收费系统报表制作的全过程
- SQL存储过程——机房收费系统结账的那些事
- 机房收费系统安装过程
- 【机房收费系统】——计算消费时间(DateDiff 函数解释)
- 机房收费系统---工程过程的图