函数(Function),功能,当我们需要反复使用同一段程序时,我们可以把他写成函数,这样可以大大减少我们的工作量。
1.清空函数
在写程序时,为了用户考虑我们经常需要清空的操作,做系统时经常需要敲相同的大量的很简单的那几句代码,很是浪费时间和精力,于是乎就偷懒写了个函数用~~~
'************************************************ '函数名:Clear '作用:判断文本框是否为空 '参数:Object '************************************************ Public Function Clear(ByVal Obj As Object) Dim C As Control For Each C In obj.Controls If TypeOf C Is TextBox Then C.Text = "" ElseIf TypeOf C Is ComboBox Then C.ListIndex = -1 End If Next C End Function
用的时候直接在相对应的事件里写 Call Clear(me)就可以清空当前窗体TextBox控件和ComboBox控件的text属性了,如果有需要判断别的类型控件,直接添加条件就可以使用了。若我们不用函数的话,三两个判断还好写,多了的话自己都不想写了,因为很麻烦很没意义~~~
2.判断文本框或组合框是否为空
在做信息管理系统和机房收费系统时遇到了大量的重复代码判断是否为空,因为比较懒,就不想敲重复性特高的代码,于是写了一个函数,省去了很多麻烦~~~~
'************************************************ '函数名:IsNull '作用:判断文本框是否为空 '参数:Object '返回值:boolean '************************************************ Public Function IsNull(ByVal Obj As Object) As Boolean Dim C As Control Dim strMsg As String IsNull = False '判断每一个在obj中的控件的类型 For Each C In Obj.Controls If TypeOf C Is TextBox Then '判断TextBox控件的text属性是否为空 If C.Text = "" Then IsNull = True strMsg = strMsg & C.Tag & "、" End If ElseIf TypeOf C Is ComboBox Then '判断ComBox控件的Text属性是否为空 If C.Text = "" Then IsNull = True strMsg = strMsg & C.Tag & "、" End If End If Next C If IsNull = True Then MsgBox strMsg & "不能为空!" End If End Function
'判断是否有空值 If IsNull(Me) = True Then Exit Sub End If
其实,这两个函数本质是一样的。判断文本框的函数多用到了Tag属性,大部分的控件都有Tag属性,Tag属性返回或设置一个表达式用来存储程序中需要的额外数据。与其它属性不同,Tag 属性值不被 Visual Basic 使用;可以用该属性来标识对象,属性是方便设计人员使用存放数据用的。首先,我们需要将要判断的文本框的名称存入tag属性中,然后再执行代码。在这里我们将属性作为了存放标志的“仓库”。 在做机房收费系统组合查询功能时同样用到了tag 属性,省去了很多麻烦~~~~
当我们遇到相同重复的代码时应当考虑它能不能写成函数,清空和判断属于很简单的代码,我们是可以凑合过去的(不能将就啊~~~),但是当我们遇到别的重复大量的代码时我们必须要写成能重复使用的函数或过程,因为不仅会增加我们的代码量同时还会拖垮程序的速度,给程序带来影响,同时代码多了错误就容易比较多!在做机房收费系统时,比如获得余额、更新余额这些经常用到的代码都可以写成函数,调用起来自己用着方便,看代码时也舒服,若产生错误的话改正也很容易,一举多得啊~~~
更新余额函数如下:
'********************************************** '函数名:UpdateRemainMoney '参数:CardNo '作用:更新学生表中的余额信息 '********************************************** Public Function UpdateRemainMoney(ByVal NewRemainMoney As String,ByVal SingleCardNo As String) Dim strtxtsql As String Dim strMsg As String Dim Stu_Rst As ADODB.Recordset strtxtsql = "update Stu set RemainMoney=" + NewRemainMoney + "where CardNo=" + SingleCardNo Set Stu_Rst = Querysql(strtxtsql,strMsg) End Function