在Access 2007中,我设置了一个表单,允许预览和导出项目报告的选项。DoCmd.OutputTo On报告不会卸载
DoCmd.OutputTo在处理Modal属性设置为true的报表时似乎表现得很奇怪。对于我正在使用的所有报告,Modal目前在Open事件中设置为True。
如果我做
DoCmd.OpenReport szReportName, acViewPreview
DoCmd.Close acReport, szReportName
然后,聚焦和控制返回到正在执行的形式正常进行。
如果我出口,而不是直接和使用
DoCmd.OutputTo acOutputReport, szReportName
然后,该报告是正确的出口,但从来没有控制返回到执行方式。它完全禁用。相同的代码工作得很好,如果我打开报告时使用Modal = False。我对报告的事件钩子进行了一些试验,试图找出差异是什么,OutputTo
被调用后,OnUnload
从未被击中。
我知道我可以解决此仅做报告模式,当我需要它是模式的,但它绝对是最容易做的从报表的代码中,而不是模块的打开它,我真的不要以为我应该有这个问题。我也没有问题,从VBA出口从预览模式的报告,而不是直接的,但显然是客户没有...
所以,实际的问题:
- 有没有什么好的理由OutputTo不触发Unload事件?如果这是正常的行为,那很好,但我至少想知道它的原因。
- 有没有办法导出模态报告并仍然重新获得对其他窗口的控制权?或者至少,这是一种不可靠的方式来重新启用并将焦点放在呼叫形式上?
我同意在报告代码中设置模态(或任何)属性并不理想。说实话,我没有把它放在那里,我只是想维持以前的行为。我相信Modal被用来代替acDialog,因为我们不希望报告处于PopUp模式。无论如何,我抵制acDialog,因为它的行为与Modal属性不同 - 它仍然允许我将焦点转换为呼叫形式。我忘了它确实应该是相同的,所以看起来我应该在报告中寻找其他问题,导致acDialog不能以模态方式运行。 – Jelly 2010-10-04 15:26:41
Popup和Modal是两种完全不同的属性,使用acDialog打开表单或报表不会导致表单/报表处于Popup模式。基本上,据我所知,acDialog导致Modal和Popup属性被忽略。 – 2010-10-04 18:49:21
我刚刚使用acDialog测试了一个从命令按钮打开的报告,并且无论Modal/Popup属性设置为什么,我都无法将焦点设置回调用窗体,直到报告预览关闭。 – 2010-10-04 18:50:13