【发布时间】: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