是否可以在BeforeUpdate事件期间将焦点设置在控件上而不取消更新?

时间:2011-03-22 16:56:57

标签: ms-access ms-access-2007

在更新MS Access 2007中的表单中的数据之前,我需要检查数据的有效性。将焦点设置在控件上以读取其属性时,无论是否将“取消”设置为“真”,更新事件将始终取消。我修剪了我的代码,只在代码中留下了TextBox.SetFocus,这足以取消更新。 我知道我可以在不设置焦点的情况下阅读文本框的值;但我也需要为其他属性设置焦点。 我的问题有解决方法吗?有什么我可能会失踪的吗? 感谢

Private Sub Form_BeforeUpdate(Cancel As Integer) 
       Me.LastName.SetFocus 
End Sub

2 个答案:

答案 0 :(得分:0)

我不知道你在代码中对文本框做了什么(也许你会导致其他一些被忽略的错误?),但你可以将所有这些值保存在表单中的变量中并设置它们在文本框的onchange上,在更新事件之前/之后。

你有可能发布代码吗?在表单的BeforeUpdate事件中设置文本框的焦点不会导致它取消(我之后检查了取消的值。)。

答案 1 :(得分:0)

假设您正在使用控件的BeforeUpdate事件(而不是表单),为什么不将移动到控件的AfterUpdate事件

您唯一真正失去的是取消控件更新的能力,但您可以在AfterUpdate事件中自己实现该功能。您只需要跟踪控件的先前值。为此,您需要创建一个PrevVal模块级变量,并将其设置为Form_Current事件,Form_Undo事件的控件值,并作为控件的AfterUpdate事件的最后一步。然后,如果用户输入无效数据,您可以回滚到控件的AfterUpdate事件的第一部分中的上一个值。

相关问题