【问题标题】:Dirty event not firing on Access 2007 formAccess 2007 表单上未触发脏事件
【发布时间】:2014-08-07 19:53:29
【问题描述】:

我有一个带有清除数据按钮的绑定弹出表单。它运行撤消命令。

Form_Current 事件将此按钮的启用属性设置为 False。

Form_Dirty 事件将此按钮的启用属性设置为 True。

即使我在表单中输入数据后,按钮的属性也始终设置为 False。我认为这是因为我的 Form_Load 事件正在填充两个字段。一个是从主窗体作为 OpenArgs 传递的,另一个是根据 OpenArgs 值计算的唯一 ID。

关于如何在这些情况下激活 Dirty 事件有什么建议吗?如果没有,那么也许还有另一种方法?

提前致谢。

代码如下:

Private Sub cmdUndoChanges_Click()

    CustID_temp = Me!CustID
    FacNo_temp = Me!Unique_ID

    DoCmd.RunCommand acCmdUndo

    Me!CustID = CustID_temp
    Me!Unique_ID = FacNo_temp

End Sub

Private Sub Form_Current()
    Me!cmdUndoChanges.Enabled = False
End Sub

Private Sub Form_Dirty(Cancel As Integer)
    Me!cmdUndoChanges.Enabled = True
End Sub

Private Sub Form_Load()
Dim test As Integer

    Me!CustID = OpenArgs

    test = DCount("Unique_ID", "tbl_Table2", "CustID = '" & Me!CustID & "'")
    If IsNull(Me!UNIQUE_No) Then
        test = test + 1
        Me!Unique_ID = CustID & "-" & test
        MsgBox "No Previous Data"
    Else
    ' these will be turned back on when the user selects the
    ' modify data button or add new data button.

        For Each ctl In Me.Controls
        Select Case ctl.ControlType
        Case acTextBox, acComboBox, acOptionGroup, acCheckBox
            ctl.Locked = True
            ctl.BackColor = 15066597
            Box40.BackColor = 15066597
        End Select
        Next ctl
    End If

MsgBox Me!Unique_ID
End Sub

【问题讨论】:

  • Form_Dirty 中放置一个断点以确认事件根本不会触发。如果它从不触发,可能是因为 Access 偶尔会“丢失”事件过程。如果您返回表单的属性表并单击 On Dirty 属性框最右侧的 3 个点,您可以提醒 Access 现有的事件过程。

标签: ms-access vba ms-access-2007


【解决方案1】:

您是否尝试过 Form_BeforeInsert() 而不是 Form_Dirty()?

【讨论】:

    【解决方案2】:

    我发现 Form_Dirty 事件永远不会触发的另一种情况,很难。我想我会在此处添加它,因为这是“未触发”问题的热门搜索结果。

    如果您的 Form_Load 函数执行任何操作来更改现有记录的值,则表单将立即设置为脏,显然是在触发事件的逻辑开始运行之前。因此,如果表单上的其他数据发生更改,将永远不会发生事件。

    我们有一个“智能”保存按钮,该按钮在 Form_Dirty 触发之前一直处于禁用状态。在我为带有垃圾字段的旧记录添加了对 Form_Load 的修复后,编辑这些记录不再启用“保存”按钮。

    【讨论】:

      猜你喜欢
      • 2011-10-22
      • 2015-02-16
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 2011-05-07
      相关资源
      最近更新 更多