Access 2016 表单控件验证规则未触发

Posted

技术标签:

【中文标题】Access 2016 表单控件验证规则未触发【英文标题】:Access 2016 Form Control Validation Rule Not Firing 【发布时间】:2016-08-04 05:28:23 【问题描述】:

我有一个简单的未绑定访问 2016 表单。在表单上,​​我有几个控件,包括文本和组合框。在第一个文本框控件上,我想要求一个数据值(基础表字段数据类型是短文本)。

我已将属性表中控件的 Validation Rule 属性设置为“Is Not Null”,并添加了适当的验证文本消息。

由于未知原因,我一直无法触发此验证规则。我已经清除了表格上的验证规则,以确保它没有干扰,但是,没有运气。

就像焦点离开控件时没有进行验证检查一样。也没有其他事件过程会干扰。

感谢您的帮助。

【问题讨论】:

只要不更改控件,就不会触发验证。我建议在表单级别使用 before_update 事件来检查您的控件是否为空。 谢谢 Rene,我实际上没有意识到除非有变化,否则验证不会被触发。在查看更新前的事件时,它们有相同的问题,除非发生更改,否则它不会触发。我的愿望是在用户退出控件时触发验证规则。看起来 John Fowler 可能有解决方案,或者我可以随时控制退出事件过程。 【参考方案1】:

你可以给控件一个默认值,然后

Form_load()
Yourcontrol.setfocus
Sendkeys "DEL"

【讨论】:

我想我会在控制 OnExit 过程中处理这个问题。 Sendkeys del 触发 numlock 开/关切换,所以这不起作用。【参考方案2】:

要求是在控件失去焦点时使用验证规则验证控件是否存在缺失值(即用户在没有输入值的情况下从文本框跳出)。我希望用户能够立即获得反馈,即他们需要为给定控件提供值。

正如 Rene 在 cmets 中指出的那样,除非值发生变化,否则验证规则不会触发。

Sendkeys 解决方案有问题,我只使用 Sendkeys 作为最后的手段。

这种情况下的解决方案是将验证测试放在 Control_OnExit 事件处理程序中。用户可以根据需要立即获得反馈,并且不会等到提交记录。

还有一个很容易被忽略的注意事项; 在未绑定的形式中,before_update 事件永远不会触发。

【讨论】:

以上是关于Access 2016 表单控件验证规则未触发的主要内容,如果未能解决你的问题,请参考以下文章

多个button与验证控件validator的矛盾

调用 ajaxrequest 后,asp 验证控件未触发

如何给动态添加的form表单控件添加表单验证

如何将一组验证规则应用于保存到特定表的所有表单?

MS ACCESS 日期验证规则(大于数据库中的任何其他数据)

vue 使用element表单不触发验证