【发布时间】:2014-09-13 19:10:00
【问题描述】:
我有一个子表单可以根据用户输入更改其记录源 (Form.SourceObject)。我正在开发一个更改跟踪系统,该系统依赖于子表单中某些字段的Before Update 属性(如果有区别,则在工作表视图中)。如果我不更改记录源,Before Update 将适当地触发。如果我确实更改了它,它就会丢失,我需要重新分配触发器。问题是,我找不到任何描述如何做到这一点的东西。我尝试使用以下代码,其中“Tracker”是要调用的代码:
Forms![PartsDatabaseX]![RepsSubformX]![Pack Rank].BeforeUpdate = "[Event Procedure]"
错误 2455 = “您输入的表达式对属性 BeforeUpdate 的引用无效”
Forms![PartsDatabaseX]![RepsSubformX]![Pack Rank].BeforeUpdate = "Tracker"
错误 2455 = “您输入的表达式对属性 BeforeUpdate 的引用无效”
Forms![PartsDatabaseX]![RepsSubformX]![Pack Rank].BeforeUpdate(Tracker)
编译错误 = 预期的函数或变量
Forms![PartsDatabaseX]![RepsSubformX]![Pack Rank].BeforeUpdate "Tracker"
错误 438 = “对象不支持此属性或方法”
编辑-
在玩了更多之后,我可以将BeforeUpdate 属性分配给表单中的控件,假设存在相应的更新前事件:
Private Sub Assign_Before_Update()
Me.FormCtl.BeforeUpdate = "[Event Procedure]"
End Sub
Private Sub FormCtl_BeforeUpdate(Cancel As Integer)
'Do stuff
End Sub
不幸的是,这个方法在子表单中仍然失败......
我开始认为我正在更改 Form.SourceObject 的事实是阻止我设置属性的原因。
【问题讨论】:
标签: vba ms-access ms-access-2007 subform beforeupdate