Foxtable(狐表)用户栏目专家坐堂 → 提一个验证输入的问题


  共有2003人关注过本帖树形打印复制链接

主题:提一个验证输入的问题

帅哥哟,离线,有人找我吗?
jjjeyes
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:305 积分:2695 威望:0 精华:0 注册:2011/10/29 16:26:00
提一个验证输入的问题  发帖心情 Post By: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在识别的时候把它认成了一位小数,所以才报错。
那么怎么解决这个问题?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/13 23:28:00 [只看该作者]

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

 

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

 

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

 

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

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
jjjeyes
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:305 积分:2695 威望:0 精华:0 注册:2011/10/29 16:26:00
  发帖心情 Post By:2018/12/14 9:50:00 [只看该作者]

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


 回到顶部