这是我的第一个问题,所以我希望我做对了。
我正在研究审核员工信息的项目。我使用两种形式,第一种是“ReadOnly”,第二种是“EditOnly”。
“ReadOnly”表单绑定到查询,该查询定义要显示的特定记录的条件。
“EditOnly”表单有一个子表单,绑定到2个表(它们也是“ReadOnly”表单源的查询的一部分),它具有1对多关系(使用此信息)回答: Error 3251 on .oldValue control property)。
“EditOnly”表单通过按钮打开,用于编辑特定员工的数据。在这种形式中,我有一个 Undo 按钮,使用以下代码:
Sub UndoEdits()
If Me.Dirty Then
Me!btnUndo.Enabled = True
Else
Me!btnUndo.Enabled = False
End If
End Sub
Sub btnUndo Click()
Dim ctlC As Control
For Each ctlC in Me.Controls
If ctlC.ControlType = acTextBox Then
ctlC.Value = ctlC.OldValue
End If
Next ctlC
End Sub
可以还原不需要的更改。但是在测试函数时,在更改了一些数据后,我得到了运行时错误2448.使用Debug突出显示了这一行:
ctlC.Value = ctlC.OldValue
有没有办法让 Undo 按钮有效?
答案 0 :(得分:0)
错误2448是"无法为此对象分配值"。
如果您尝试为表单上任何只读/锁定或禁用的文本框分配值,则会出现此错误。
修改您的代码以检查ctlc
和Enabled
的{{1}},并跳过任何不可分配的控件,如下所示:
Locked
调试提示:
您可以通过步进或写入即时窗口( Dim ctlC As Control
For Each ctlC in Me.Controls
If ctlC.ControlType = acTextBox Then
If ctlC.Enabled And Not ctlC.Locked Then
ctlC.Value = ctlC.OldValue
End If
End If
Next ctlC
)来检查ctlc.Name
的值,以查看哪个文本框是问题的根源。