以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  提一个验证输入的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=128741)

--  作者:jjjeyes
--  发布时间:2018/12/13 23:17:00
--  提一个验证输入的问题
我有一张“表A”,有一列“长跑”填写的内容是学生1000米跑步的成绩,因为时间不可能为大于59秒的情况,所以,长跑列的数值一般为3.45(3分45秒)或者5.59(5分59秒)也就是说小数点后不可能出现60以上的数值。
我将此列用以下的代码来验证有效性:
If e.Col.Name = "长跑" Then \'如果正在输入的是长跑列
    If e.Text > "" Then \'如果已经输入内容
        Dim ar() As String = e.Text.split(".")
        If ar.Length = 2 Then
            Dim v1 As Double = Val(ar(0)) \'将输入的内容转换为数值
            If v1 > 8 OrElse v1 < 2 Then \'如果输入的值大于8或者小于2就报错
                MessageBox.Show("输入范围无效!请输入个位数为2-8之间的数字","错误")
                e.Cancel = True \'则禁止退出编辑模式
            Else
                Dim v2 As String = Val(ar(1)) \'定义小数点后的数段
                If v2.length = 2 Then \'判定小数部分是否为两位数
                    If v2 > 59  Then \'如果输入的值大于59
                        MessageBox.Show("输入范围无效!请在小数位输入不大于60的数值","错误")
                        e.Cancel = True \'则禁止退出编辑模式
                    End If
                Else
                    MessageBox.Show("请输入两位小数","错误")
                    e.Cancel = True \'则禁止退出编辑模式
                End If
            End If
        Else
            MessageBox.Show("请输入小数部分,并保证小数部分只有两位数","错误")
            e.Cancel = True \'则禁止退出编辑模式
        End If
    End If
End If

但是以上代码执行后会出现一个问题,就是在小数位出现为01-09的时候,比如5.01(5分01秒)到5.09(5分09秒)的时候,会提示“请输入两位小数”,禁止输入了。
我知道是因为01-09在识别的时候把它认成了一位小数,所以才报错。
那么怎么解决这个问题?

--  作者:有点甜
--  发布时间:2018/12/13 23:28:00
--  

你的问题,修改这句代码即可

 

Dim v2 As String = ar(1) \'定义小数点后的数段

 

为什么不改成【时段】列?

 

http://www.foxtable.com/webhelp/scr/2505.htm

 

 


--  作者:jjjeyes
--  发布时间:2018/12/14 9:50:00
--  
代码看懂了,试用后没有问题。谢谢解答!
没有使用时间格式,是因为不方便输入,因为比如输入5分34秒,用时间格式就非要输入0534几个字符,而输入534就会录入成53:40,不仅会录入错误,也不符合录入习惯。所以用这种办法提示并验证有效性。