禁用访问中的文本框时出现问题

时间:2014-02-18 13:36:19

标签: vba ms-access access-vba

我有以下代码:

Private Sub s1_AfterUpdate()
If s1 > 20 Then
MsgBox "Maximum is only 20"
Me.s1= 0
ElseIf s1 = 20 Then
Me.s1_8x12qtty.Enabled = False
End If
End Sub

我面临的问题是,当我把价值增加到20时,它将禁用 Me.s1_8x12qtty ,我很擅长,因为这就是我告诉它的事情......但是当我在表单中创建新记录时,它会在表单的生命周期内保持禁用...意味着如果我不关闭表单,即使我创建新记录和 s1的值为零。

为什么会发生这种情况我很困惑?

问候

3 个答案:

答案 0 :(得分:1)

  

如果我不关闭表单,即使我创建新记录

,它仍将保持禁用状态

在我看来,您需要在表单的On Current事件中使用一行代码来检查s1的值,并可能重新启用该控件。

答案 1 :(得分:0)

尝试在创建新记录时创建另一个子运行,或将此代码放入您可能对同一事件执行的预先存在的子代码中:

Me.s1_8x12qtty.Enabled = True

答案 2 :(得分:0)

为什么会这样?在文本框中放置一个导致其被禁用的值后,您将无法再更新该值。期。您已将此代码放入After_Update事件中,无论您做什么,该事件都不会再次触发,除非您可以某种方式以某种方式重置该控件。

正如Gord所述,检查On_Current事件中的值(或者只是在On_Current事件中将Enabled属性重置为True)将允许您在每次移动到新记录时重置控件的状态。