我的目标是从表单中打开报告的多个实例,仅显示 ID 的更改。
所以,VBA代码是:
DoCmd.OpenReport "ordentallerSobre", acViewPreview, , "id = 20370"
DoCmd.OpenReport "ordentallerSobre", acViewPreview, , "id = 20371"
Run Code Online (Sandbox Code Playgroud)
然后,只有最后一个报告显示为选项卡。但我需要展示他们两个。对于这个看似微不足道的问题有什么解决方案吗?
这并不是一件小事。默认情况下,报表、表单和查询仅支持一个实例。
我的方法如下:
在报告中,在顶部添加一行(在 后面Option Explicit):
Public Myself As Object
Run Code Online (Sandbox Code Playgroud)
然后,使用以下代码代替当前的代码:
Dim rpt As Report_ordentallerSobre
Set rpt = New Report_ordentallerSobre
Set rpt.Myself = rpt
rpt.Filter = "id = 20370"
rpt.FilterOn = True
rpt.Visible = True
Set rpt = New Report_ordentallerSobre
Set rpt.Myself = rpt
rpt.Filter = "id = 20371"
rpt.FilterOn = True
rpt.Visible = True
Run Code Online (Sandbox Code Playgroud)
这将打开两个具有两个不同过滤器的报告。
请注意,它们都在默认视图中打开,无法更改。此外,此类对象还存在一些困难,例如您无法指定集合中的报表实例Reports或使用多个DoCmd语句。
Allen Browne有一篇关于多实例表单的文章,与报表大致相同。他的方法比这个方法更复杂,但比我实际使用的方法更简单(涉及管理这些多实例表单的预先声明的对象)