【发布时间】:2018-02-24 22:11:22
【问题描述】:
我在表单上有三个相关字段:一个用于输入日期的文本框 [Qtr1Date1] 和两个带有原因选择 [Qtr1Date1Reason] 和发起人选择 [Qtr1Date1Changer] 的组合框。当用户更改日期文本框时 - 我有 AfterUpdate 事件更改组合框的颜色并将它们消隐。我希望用户被引导在每个选项中选择一个选项(以更新审计跟踪),并且在这样做之前无法继续。我看过其他几篇关于 SetFocus 不起作用的帖子,以及关键选择的顺序,但我不确定为什么我的不起作用。我可以单击表单上的其他字段。
我尝试过: - 改为在更新前输入空白。 - Not Null 组合框的验证规则(不识别初始消隐) - 向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
【问题讨论】:
-
“不工作”是什么意思 - 错误信息,错误结果,没有任何反应?输入日期后,组合框是否已经获得焦点?设置 TabOrder 属性,可能不需要 SetFocus。
-
无论我按 Tab 还是 Enter,光标确实会移动到 Change Reason 字段,但我希望它可以防止他们在不进行选择的情况下离开它。我完全使用了错误的功能吗?
-
尝试使用
LostFocus事件使光标在该字段失去焦点时移动到另一个字段。请注意,在不更改字段时也会触发。BeforeUpdate事件是检查输入值是否有效的正确事件,应该被接受。您可以在BeforeUpdate事件中使用Cancel参数来拒绝更改。 -
BeforeUpdate 事件不会阻止用户在不输入数据的情况下进入然后离开控制 - 'tabbing through'。因此,使用验证规则应该将它们保留在控件上,直到输入/选择值。如果用户仅限于列出的项目,则不需要组合框 BeforeUpdate。不要使用空字符串来“空白”控件。我不允许在字段中使用空字符串。设置为 Null。
-
@Erika 您能否更清楚地了解您需要帮助的具体问题是什么?
标签: ms-access events stored-procedures setfocus