导读:昨晚雄赳赳、气昂昂的去验收机房了。师傅的手,就不是手,全都是爪子。可以把好多好多乱七八糟的问题给抓出来。唉,本来以为做的还蛮好的,结果给硬生生抓出了十三个有待修整的问题。果然,姜,还是老的辣。


首先,解决文本框的输入限制问题。


这个问题,是在基本数据设定里被逮出来滴,当师傅卡卡往固定用户每小时费用的输入框里输东西的时候,看着上面的显示结果,顿时傻眼儿了。还是那句老话,出来混,总是要还的。都是以前欠下的债,希望经过这次,会补上一点。

固定用户每小时费用文本框(为例)的输入:

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,即小数点输入无效。


最后,总结一下感受。


经此一役,我终于明白了,每次师傅们验收系统,都会对系统进行破坏性测试。他们明明都知道怎样使才对,可是就偏偏不那样做。而,每次师傅们用到的测试方法,应该就是《信息系统开发与管理》中,传说的黑盒测试。我希望有一天,我能做出一个明明有漏洞,却让人发现不了的软件。哈哈哈哈哈哈,任你怎么破坏,它就是死不了。就像昨天我跟师傅说的:师傅,我就希望有一天,我能做出一个,除了我,别人都不会维护的系统。


唉,改完了一个类型滴,明儿接着干。。。。。。。。鸡窝垒造中!





请大家多多指教,谢谢!

posted on 2014-08-13 16:23  何红霞  阅读(288)  评论(0编辑  收藏  举报