如上所述,这是Access 2010 .accdb。
我有一个主要的导航形式:frmNav。
在frmNav上我有一个Navigation子窗体控件:NavigationSubForm。
我使用docmd browseto在导航控件上的标签之间移动。
要在NavigationSubForm控件中加载的第一个表单是frmInboundShipments。
frmInboundShipments包含子表单控件sfrmListInvoicesByShipment。
sfrmListInvoicesByShipment包含与frmInboundShipments中每批货物相关联的已过滤发票数据表。
frmItemInvoices包含sfrmListInvoicesByShipment中引用的发票。
使用browseto命令 执行 在frmInboundShipments和frmItemInvoices之间移动的以下方法会触发frmInboundShipments上的UnLoad事件:
但是,当我执行以下操作时,frmInboundShipments 上的UnLoad事件无法触发 :
双击sfrmListInvoicesByShipment中的字段/数据表行,触发browseto命令以显示/移动到frmItemInvoices:
一个。立即执行docmd browseto以显示frmItemInvoices
湾首先将焦点设置在父窗体上,然后执行docmd browseto以显示frmItemInvoices
i. e.g.: Me.Parent.sfrmListInvoicesByShipments.SetFocus
DoCmd.BrowseTo acBrowseToForm, "frmItemInvoices", "frmNav.NavigationSubform", ...criteria....
我无法理解为什么在从子窗体发出browseto命令时不触发事件的原因,而是在两个窗体之间导航时在每个其他场景中触发事件。
我查看了Access 2010的事件顺序,我没有看到任何明确说明在从子窗体中查看另一个窗体时主窗体的Unload事件不会触发的内容。
在这种情况下,Deactivate事件也不会触发。
更新,10/18/13:进一步调查显示父窗体的Close事件确实触发,但绝对不是停用或卸载事件。问题是,一旦表单关闭事件发生,我想要捕获的值已经消失。不知道该怎么做......
答案 0 :(得分:0)
我感觉到你的痛苦。我有很长时间调试Access Form事件的经验,并且已经有了几个规则:
那你能做什么?我的建议:
Debug.Print
之类的内容,并避免使用Breakpoints。那么,这对你有什么帮助?我的(必然是广义的)答案是在您采取表单操作之前将任何想要保留的信息放在外部模块级变量或类 之前。然后,您的主表单可以使用该信息,而不依赖于孩子的状态。