Eri*_*k A 6 events ms-access vba access-vba
我有一个带有子窗体的窗体,该窗体绑定到临时表。临时表包含数据透视表的结果,但是我希望用户能够编辑该数据透视表,然后将更改推送到源表。
要做到这一点,我想着火事件AfterInsert,AfterUpdate而Delete这样我就可以改变作用。据我了解,子窗体的form属性是在子窗体绑定到表时引用的临时数据表窗体。但是,我无法获得此临时表格来引发任何事件。
MCVE:
我有一个数据库,其中有一个表Table1,一个表单Form1,并且该表单具有一个未绑定的子表单控件。
我有一个带有以下代码的类Class1:
Private WithEvents subformForm As Access.Form
Public Sub Init(subformControl As Access.SubForm)
Set subformForm = subformControl.Form
subformForm.OnCurrent = "[Event Procedure]"
End Sub
Private Sub subformForm_Current()
MsgBox "Current!"
End Sub
Run Code Online (Sandbox Code Playgroud)
表单Form1包含以下代码:
Private c1 As Class1
Private Sub Form_Load()
sub1.SourceObject = "Table.Table1"
Set c1 = New Class1
c1.Init sub1
End Sub
Run Code Online (Sandbox Code Playgroud)
但是,当我移动记录,添加记录以及在该子窗体中执行任何操作时,该subformForm_Current事件永远不会触发。
这是因为子表单对象不是具有代码模块的表单。因此,事件过程无处可运行。
因此,使用表作为源在 datasheetview 中创建一个没有代码模块的表单,并将其用作子表单:
现在,调整表单以具有代码模块:
不管怎样,这就是我在 Access 2016 中的工作方式。