从表单中,我旨在打开报表的多个实例,而只显示ID的更改。
因此,VBA代码为:
DoCmd.OpenReport "ordentallerSobre", acViewPreview, , "id = 20370"
DoCmd.OpenReport "ordentallerSobre", acViewPreview, , "id = 20371"
然后,只有最后一个报告显示为选项卡。但是我需要展示两个。这个看似微不足道的问题有什么解决办法?
答案 0 :(得分:4)
这不是那么简单。默认情况下,报表,表单和查询仅支持一个实例。
我的方法如下:
在报告中,在顶部({{1}之后)添加一行:
Option Explicit
然后,使用以下内容代替当前的代码:
Public Myself As Object
这将打开两个带有两个不同过滤器的报告。
请注意,它们都在默认视图中打开,无法更改。同样,使用此类对象也有很多困难,例如您无法在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
集合中指定报表的实例或无法使用多个Reports
语句。
Allen Browne上有一篇有关多实例表单的文章,与报告大致相同。他的方法比这种方法要复杂一些,但比我实际使用的方法要简单得多(该方法涉及一个管理这些多实例形式的预先声明的对象)
答案 1 :(得分:0)
我会使用'Distinct'子句。几周前,我不得不从表中导出项目,并将它们另存为单独的CSV文件。我会这样看你的问题。下面是我的工作代码。希望对您有帮助。
Option Compare Database
Private Sub Command0_Click()
Dim dbThis As Database
Dim rsThis As Recordset
Dim qdfNew As QueryDef
Set dbThis = CurrentDb()
Set rsThis = dbThis.OpenRecordset("Select Distinct OrderID as dValue from Orders where OrderID is not null", dbOpenSnapshot)
Do While Not rsThis.EOF
Debug.Print rsThis.Fields("dValue").Value
Set qdfNew = New QueryDef
' Don't use quotes if you are filtering on a numeric field
qdfNew.SQL = "select * from Orders where OrderID = " & rsThis.Fields("dValue").Value & ""
' Use quotes around the variable if you are filtering on a text field
' qdfNew.SQL = "select * from Orders where OrderID = '" & rsThis.Fields("dValue").Value & "'"
qdfNew.Name = "qryTemp"
dbThis.QueryDefs.Delete "qryTemp"
dbThis.QueryDefs.Append qdfNew
qryTemp = qdfNew.SQL
DoCmd.TransferText acExportDelim, , "qryTemp", "C:\Test\" & rsThis.Fields("dValue").Value & ".csv", True
rsThis.MoveNext
Loop
rsThis.Close
End Sub
稍作修改,就可以使其适用于您的报告。