导读:昨晚雄赳赳、气昂昂的去验收机房了。师傅的手,就不是手,全都是爪子。可以把好多好多乱七八糟的问题给抓出来。唉,本来以为做的还蛮好的,结果给硬生生抓出了十三个有待修整的问题。果然,姜,还是老的辣。
首先,解决文本框的输入限制问题。
这个问题,是在基本数据设定里被逮出来滴,当师傅卡卡往固定用户每小时费用的输入框里输东西的时候,看着上面的显示结果,顿时傻眼儿了。还是那句老话,出来混,总是要还的。都是以前欠下的债,希望经过这次,会补上一点。
固定用户每小时费用文本框(为例)的输入:
Private Sub txtRegularEveryHour_KeyPress(KeyAscii As Integer) '允许输入小数点/数字/退格键
If KeyAscii < 48 Or KeyAscii > 57 Then '如果输入值不是数字0—9
If KeyAscii = 46 Then '如果输入 小数点
If Trim(txtRegularEveryHour.Text) = "" Or InStr(1, Trim(txtRegularEveryHour.Text), ".") <> 0 Then '如果文本框为空,或者已经输入了小数点
KeyAscii = 0 '小数点输入无效
Else
KeyAscii = 46 '输入小数点
End If
ElseIf KeyAscii = 8 Then '如果键入空格键
KeyAscii = 8
Else '如果输入值不是数字、小数点、空格键,则输入无效
KeyAscii = 0
End If
End If
End Sub
其次,介绍里面用到的InStr函数。
语法
InStr([start, ]string1, string2[, compare])
InStr 函数的语法具有下面的参数:
部分说明
start 可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果 start 包含 Null,将发生错误。如果指定了 compare 参数,则一定要有 start 参数。
string1 必要参数。接受搜索的字符串表达式。
string2 必要参数。被搜索的字符串表达式。
Compare 可选参数。指定字符串比较。如果 compare 是 Null,将发生错误。如果省略 compare,Option Compare 的设置将决定比较的类型。
然后,我用我的代码来简单理解这个函数。
InStr(1, Trim(txtRegularEveryHour.Text), ".") <> 0
我从txtRegularEveryHour文本框中,去查找".",第一次在此文本框中出现的位置,当它返回的值不等于零时,说明在文本框中已经出现过".",而在数字表达中,一个数是不能有两个小数点的。因此,KeyAscii = 0,即小数点输入无效。
最后,总结一下感受。
经此一役,我终于明白了,每次师傅们验收系统,都会对系统进行破坏性测试。他们明明都知道怎样使才对,可是就偏偏不那样做。而,每次师傅们用到的测试方法,应该就是《信息系统开发与管理》中,传说的黑盒测试。我希望有一天,我能做出一个明明有漏洞,却让人发现不了的软件。哈哈哈哈哈哈,任你怎么破坏,它就是死不了。就像昨天我跟师傅说的:师傅,我就希望有一天,我能做出一个,除了我,别人都不会维护的系统。
唉,改完了一个类型滴,明儿接着干。。。。。。。。鸡窝垒造中!
请大家多多指教,谢谢!