问题描述
我们有一个绑定到后端 sql Server 数据库的 Access 表单。当用户输入的文本超出绑定到该表单控件的相应数据列的数据限制时,Access 会显示“文本太长,无法编辑”错误。我认为(但无法验证)这是错误 #2221。
我希望能够捕获此错误以提供更易于使用的消息。在研究(发现 this 和 this)时,一些编码人员提到能够在 Form_Error 事件中捕获该错误,我发现了一篇支持文章,其中包含一个使用 Form_Error 事件捕获错误的体面示例{ {3}}。但这对我不起作用。 Form_Error 事件似乎不会在此错误期间触发,尽管它似乎在先前引用的线程中以这种方式成功捕获错误时已触发。线程中有人提到该错误在 Access 2002 之前是不可捕获的,但自 Access 2002 以来是可捕获的。我有 Access 365!
有关此错误是否实际上可捕获的任何见解,或者我如何在 Form_Error 事件中或以其他方式处理此错误?
解决方法
我可以建议的唯一“否则”方法是防止错误而不是陷阱。通常,文本(短文本)类型字段会阻止输入超过允许限制的字符。但是,这会因粘贴文本而失败并触发引用的错误。
要处理可能超过 255 个字符的粘贴文本,请考虑使用备注(长文本)字段或未绑定文本框。使用 ValidationRule 和/或 VBA 代码来验证输入 - 在输入满足要求之前不要让用户离开控制权。
我测试了复制/粘贴并触发了控件的 BeforeUpdate 事件。
备注字段或 UNBOUND 控件上的 Len([myControl])=10 Or Is Null
等验证规则适用于键入或粘贴的输入。