以文本方式查看主题 - 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,不仅会录入错误,也不符合录入习惯。所以用这种办法提示并验证有效性。 |