Ms access MS Access SetFocus在AfterUpdate事件上不工作

Ms access MS Access SetFocus在AfterUpdate事件上不工作,ms-access,events,stored-procedures,setfocus,Ms Access,Events,Stored Procedures,Setfocus,表单上有三个相关字段:一个用于输入日期的文本框[Qtr1Date1]和两个带有原因选项[Qtr1Date1Reason]和发起人选项[Qtr1Date1Changer]的组合框。当用户更改日期文本框时-我有AfterUpdate事件更改组合框的颜色并将其清空。我希望用户在每一个选项中选择一个选项(更新审计跟踪),并且在这样做之前无法继续。我已经看过其他几篇关于SetFocus不起作用的帖子,以及关键选项的顺序,但我不确定为什么我的帖子不起作用。我可以单击表单上的其他字段 我试过: -改为在Bef

表单上有三个相关字段:一个用于输入日期的文本框[Qtr1Date1]和两个带有原因选项[Qtr1Date1Reason]和发起人选项[Qtr1Date1Changer]的组合框。当用户更改日期文本框时-我有AfterUpdate事件更改组合框的颜色并将其清空。我希望用户在每一个选项中选择一个选项(更新审计跟踪),并且在这样做之前无法继续。我已经看过其他几篇关于SetFocus不起作用的帖子,以及关键选项的顺序,但我不确定为什么我的帖子不起作用。我可以单击表单上的其他字段

我试过: -改为在BeforeUpdate中输入空格。 -组合框的验证规则为Not Null(不识别初始空格) -向setfocus添加另一个控件以取消订单键事件,然后设置回所需的setfocus控件

Private Sub Qtr1Date1_AfterUpdate()
     Call LogChanges(StoreCode)
     Qtr1Date1Reason = ""
     Qtr1Date1Changer = ""
     Qtr1Date1Reason.BackColor = RGB(244, 66, 113)
     Qtr1Date1Changer.BackColor = RGB(244, 66, 113)
     Me.Qtr1Date1Reason.SetFocus
End Sub

更新:我现在所做的是解决不知道如何让他们输入选择的问题,将原因和发起人更改为“会计错误”/“会计”,然后在这些字段中输入一条验证规则,即如果有日期,必须输入,因此他们要么选择自己作为罪魁祸首,要么进行另一个选择

Private Sub Qtr1Date1_AfterUpdate()
     Call LogChanges(StoreCode)
     Qtr1Date1Reason = "Accounting Error"
     Qtr1Date1Changer = "Accounting"
     Qtr1Date1Reason.BackColor = RGB(244, 66, 113)
     Qtr1Date1Changer.BackColor = RGB(244, 66, 113)
     Me.Qtr1Date1Reason.SetFocus
End Sub


原始验证规则正在测试Null。代码将combobox设置为空字符串,空字符串与Null不相同。若要解决“无法识别初始空白”的问题,请尝试将组合框设置为Null,而不是空字符串


我不允许在字段中使用空字符串。

“不工作”意味着什么-错误消息、错误结果、什么都没有发生?输入日期后,组合框是否已获得焦点?设置TabOrder属性,可能不需要设置焦点。无论我是按Tab键还是按Enter键,光标确实会移动到“更改原因”字段,但我希望它能防止他们在不进行选择的情况下离开它。我是否完全使用了错误的函数?尝试使用
LostFocus
事件使光标在该字段失去焦点时移动到另一个字段。请注意,在不更改字段时也会激发。更新之前的
事件是检查输入值是否有效的正确事件,应予以接受。您可以使用
BeforeUpdate
事件中的
Cancel
参数拒绝更改。BeforeUpdate事件不会阻止用户在不输入数据的情况下输入然后离开控件-“切换”。因此,在输入/选择值之前,使用验证规则应将它们保留在控件上。如果用户仅限于列出的项目,则不需要更新前的组合框。不要将空字符串用于“blank”控件。我不允许字段中出现空字符串。设置为Null。@Erika您能更清楚一点您需要帮助的确切问题是什么吗?我真的不知道这是如何回答这个问题的(在我的设置中,
Control=“”
将其完全清空)。你能再详细解释一下吗?现在,在我看来,它更像是一个注释。空字符串将清空控件,但验证规则正在测试Null,因为值是空字符串,所以验证当然失败。这似乎是埃里卡问题的主要来源。啊,谢谢你的解释。我个人会通过调整验证规则来解决这个问题,但您的方法也应该是有效的。