Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access Access 2007窗体上未触发脏事件_Ms Access_Vba_Ms Access 2007 - Fatal编程技术网

Ms access Access 2007窗体上未触发脏事件

Ms access Access 2007窗体上未触发脏事件,ms-access,vba,ms-access-2007,Ms Access,Vba,Ms Access 2007,我有一个带有清晰数据按钮的绑定弹出表单。它运行Undo命令 Form_Current事件将此按钮的enable属性设置为False Form_Dirty事件将此按钮的enable属性设置为True 即使在我将数据输入表单后,按钮的属性也始终设置为False。我想这是因为我的Form_Load事件填充了两个字段。一个是作为OpenArgs从主窗体传递的,另一个是基于OpenArgs值计算的唯一ID 在这种情况下,有没有关于如何激活脏事件的建议?如果没有,那么可能有另一种方法 提前谢谢 代码如下:

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

Form_Current事件将此按钮的enable属性设置为False

Form_Dirty事件将此按钮的enable属性设置为True

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

在这种情况下,有没有关于如何激活脏事件的建议?如果没有,那么可能有另一种方法

提前谢谢

代码如下:

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\u BeforeInsert()而不是Form\u Dirty()?

我发现了另一种情况,Form\u Dirty事件从未触发,这是一种艰难的方式。我想我应该把它加在这里,因为这是“不开火”问题的最热门搜索结果

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


我们有一个“智能”保存按钮,在Form_Dirty启动之前一直处于禁用状态。在我为带有垃圾字段的旧记录添加表单加载修复程序后,编辑这些记录将不再启用“保存”按钮。

Form\u Dirty
中放置断点以确认事件根本不会触发。如果它从未触发,可能是因为访问偶尔会“丢失”事件过程。如果返回表单的属性页并单击on Dirty属性框最右侧的3个点,则可以提醒Access有关现有事件过程的信息。