Foxtable(狐表)用户栏目专家坐堂 → [求助]文本框输入错误数据后会运行两次代码


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

主题:[求助]文本框输入错误数据后会运行两次代码

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


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
[求助]文本框输入错误数据后会运行两次代码  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/10/31 15:44:00 [只看该作者]

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

 

文本框验证使用 Validating


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


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
  发帖心情 Post By:2015/10/31 16:43:00 [只看该作者]

发送开发版例子

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


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
  发帖心情 Post By:2015/10/31 16:43:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.zip

再发送

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


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
  发帖心情 Post By:2015/10/31 16:57:00 [只看该作者]

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

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

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

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

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
  发帖心情 Post By:2015/10/31 17:35:00 [只看该作者]

我再测试一下,我发出去前,测试是会跳出两次的。

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


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
  发帖心情 Post By:2015/10/31 18:42:00 [只看该作者]

测试版本没有问题,但我的原数据库还不行,想是哪个环节有问题。还得逐条测试。谢谢!
[此贴子已经被作者于2015/10/31 18:42:29编辑过]

 回到顶部