写这个系统的代码的时候,有很多函数还有VB知识不懂,现在明白了些,整理下,打包下收获:
1.trim函数
好多个窗体的代码里都有用这个函数,一开始啥都不懂,哎,怎么我也没查查呢,忘了为什么了...反正跟个机器似的,一直在那敲,敲完了,一头雾水,整的个啥呢,那就开始倒嚼吧,于是上网,2秒钟得到结果,我靠,这么简单:删除字符串中多余的空格,但会在英文字符串中保留一个作为词与词之间分隔的空格。SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的资料库中有不同的名称。
好几天不懂的东西,秒秒钟搞定了...
ltrim 去掉左边空格
rtrim 去掉右边空格
2.end sub 和 exit sub
end sub 结束一个过程,exit sub 从过程中退出,这个exit sub 在我优化的系统中起到了举足轻重的地位,程序执行到end sub 表示这个进程执行完了,执行到exit sub ,表示从进程中退出,后面的代码就不用执行了。看起来好像一样,有时候我们需要在一定的条件下从过程中退出,而当条件不足时,就不要退出。
比如修改课程信息里面的删除记录按钮
看下代码,注意找里面的exit sub
Private Sub deleteCommand_Click() myBookmark = mrc.Bookmark str2 = MsgBox("是否删除当期记录?", vbOKCancel, "删除当期记录") On Error GoTo gperror If str2 = vbOK Then mrc.MoveNext If mrc.EOF Then mrc.MoveFirst myBookmark = mrc.Bookmark mrc.MoveLast mrc.Delete mrc.Bookmark = myBookmark Call viewData Else myBookmark = mrc.Bookmark mrc.MovePrevious mrc.Delete mrc.Bookmark = myBookmark Call viewData End If Else mrc.Bookmark = myBookmark Call viewData End If Exit Sub '在这儿,这个exit sub 作用很大 gperror: MsgBox "已经没有记录了,窗口即将关闭!", vbOKOnly + vbInformation, "提示" txtCourseno = "" Unload Me str1 = MsgBox("记录都删没了,还添加吗?", vbOKCancel + vbQuestion, "问题:") If str1 = vbOK Then frmAddcourseinfo.Show End If End Sub
程序就这么一行一行的执行着,当点击删除记录按钮后,如果还有记录则显示,如果删除的是正好是最后一条记录,这时,不执行任何操作,程序肯定就会报错,显示eof和bof重合,那么从Exit Sub 那退出过程,开始执行事先编写的错误处理语句,完美解决问题。
系统代码中还有很多Exit Sub,作用不可小觑。
3.SQL Server 2008里各种DateTime的取值范围
我的网易博客
4.入学日期和出生日期的比较
定义两个日期型变量即可直接比较,解决问题
Dim borndate As Date '定义这两个变量,后期进行输入出生和入学时期的比较 Dim getdate As Date borndate = Trim(txtBorndate.Text) getdate = Trim(txtRudate.Text) If getdate <= borndate Then MsgBox "入学时间不能小于出生时间,(+﹏+)~狂晕 请重新输入", vbOKOnly + vbInformation, "提示" txtRudate.SetFocus Exit Sub End If
这个还没有深入了解,知道它是个函数,要执行SQL语句,系统中有这么一句
Set mrc = ExecuteSQL(txtSQL, MsgText)
括号里面的两个参数 txtSQL 是用来执行的SQL语句 比如:select * from 表;MsgText参数 指的是执行完SQL语句后的弹出框,是成功了还是失败了之类的。
李亚松的博客有解释这个函数的定义,注释做的很好。
6. Dim str2$ AS Boolean 这句错误代码
字符串型(String) 这一数据类型声明符是用 $ 表示的,它与Boolean相互冲突。而且MsgBox返回的是Integer值。
这么写就不会出错了:
Dim str2 As Integer str2 = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")
7.Dim mrcc AS ADODB.Recordset
一直把mrcc还写作mrc,最后程序跑起来总是得不到结果,然后改为mrcc,竟然成功了...没想到,真有这个mrcc啊,而且定义都为记录集,好吧,才疏学浅
还有很多不懂的,在机房收费系统中再次长见识吧。