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