以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]文本框输入错误数据后会运行两次代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=76549)

--  作者:gfj72
--  发布时间:2015/10/31 15:05:00
--  [求助]文本框输入错误数据后会运行两次代码

在"表A“的DataColChanging事件输入如下代码

Select Case e.DataCol.name
    Case "干燥前丝长1","干燥前丝长2","干燥前丝长3"
        If e.NewValue IsNot Nothing Then
            If e.NewValue > 305 Or e.NewValue < 302  Then
                MessageBox.Show("当前数据超出管理范围,请确认后再输入!","提示")
                e.Cancel = True
            End If
        End If
end select

然后在窗口中建了Table控件绑定“表A”。

然后建三个文本框,分别绑定"表A"的"干燥前丝长1","干燥前丝长2","干燥前丝长3",

当我在文本框中输入超出规格值的数据后,会跳出两次“当前数据超出管理范围,请确认后再输入!”

的警告窗。如果我在Table控件中输入,就只会跳出一次。

一:请问这是什么情况?如何解决这个问题?

二:如果我想实现如果输入的值超出规格后,不能离开当前的文本框如何实现?


 


--  作者:Hyphen
--  发布时间:2015/10/31 15:44:00
--  

没有发现第一种情况,上传测试例子

 

文本框验证使用 Validating


--  作者:gfj72
--  发布时间:2015/10/31 16:43:00
--  
发送开发版例子
--  作者:gfj72
--  发布时间:2015/10/31 16:43:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.zip

再发送
--  作者:gfj72
--  发布时间:2015/10/31 16:57:00
--  

文本框验证Validating这个太麻烦了,我要输入的数据有上百个,每个文本框都要去编写判定代码,

很耗时间,因为在表中我就设置了对输入值的判定,只是在文本框中进行了输入,输入错了也会提示

,但却不能留在这个文本框,如何把这两个结合起来呢?

[此贴子已经被作者于2015/10/31 16:57:55编辑过]

--  作者:Hyphen
--  发布时间:2015/10/31 17:30:00
--  

这边测试不会弹出2次提示。

 

表事件无法判断绑定的是那个控件,无法结合起来。只能逐个控件进行判断

 

变通作法,给文本框取有规则的名称,如txt_全长

 

Select Case e.DataCol.Name
    Case "全长"
        If e.NewValue > 100 Or e.NewValue < 50 Then
            MessageBox.Show("输入的数据超范围,请重新输入")
            e.Cancel = True

        End If
    Case "宽度"
        If e.NewValue > 40 Or e.NewValue < 20 Then
            MessageBox.Show("输入的数据超范围,请重新输入")
            e.Cancel = True

        End If
End Select

If e.Cancel AndAlso Forms("录入").Opened Then
    Forms("录入").Controls("txt_" & e.DataCol.Name).Select()
End If


--  作者:gfj72
--  发布时间:2015/10/31 17:35:00
--  
我再测试一下,我发出去前,测试是会跳出两次的。
--  作者:gfj72
--  发布时间:2015/10/31 18:42:00
--  
测试版本没有问题,但我的原数据库还不行,想是哪个环节有问题。还得逐条测试。谢谢!
[此贴子已经被作者于2015/10/31 18:42:29编辑过]