三个访问报告使用两个传递查询和一个标准SELECT查询,所有这些都是单独工作的。一个主报表由一个命令按钮开始,该命令按钮从表单中获取日期范围的两个日期。在每次使用之后,我可以在ptq中看到这些日期参数的变化。一个附加报告基于另一个ptq运行,使用为日期范围提供的“默认”日期(在从主报表调用附加报告时没有任何重置这些日期的内容--这是我的问题或断开连接),另一个在标准select查询上使用WHERE子句调用表单中的日期。这两份报告为主要报告提供了额外但不同的数据。我不相信它们将是带有链接的主字段和子字段的子报表,因为主报表数据和附加的报表数据不相关联。问题是日期范围没有传递给附加报告的一个ptq,因此日期永远不会更改,并且只会返回其ptq中的“默认”日期范围。以下是两个ptq:
exec dbo.uspJobsCompletedThruPress '2019-10-07 05:30:00','2019-10-12 14:29:59'
exec dbo.uspJobsCompletedThruPress_SubReport '2019-10-14 05:30:00','2019-10-19 14:29:59'子报表sp按预期返回单个记录。
我尝试使用SELECT查询,就像其他附加的报告一样,但是这是行不通的,因为sp的标量不返回日期,它只使用日期参数来构建标量记录。
如何从主报表获得传递给附加报表的ptq的日期参数?
另一个问题是,这些附加报告位于报表页脚部分,因此它们的数据将在主报表的记录列表之后立即打印。但是,由于我使用的是两列,因此所附报表的数据总是打印在下一页上,而不是在第一列底部(通常)或第二列底部(给定足够的记录),即使在列出的记录末尾有足够的空间时也是如此。我怎样才能直接按照第一份清单制作所附的报告?这应该是另一个问题吗?
发布于 2019-10-31 20:05:57
在启动报表之前,您可以始终设置PT查询。
所以您可以使用这样的代码:
Sub Mytestzz()
Dim strDtStart As String
Dim strDtEnd As String
strDtStart = qudateT("some date source for start date")
strDtEnd = qudateT("some date source for end date")
With CurrentDb.QueryDefs("qryJobsPressPass")
.SQL = "exec dbo.uspJobsCompletedThruPress " & strDtStart & "," & strDtEnd
End With
With CurrentDb.QueryDefs("qryJobsPressPassSub")
.SQL = "exec dbo.uspJobsCompletedThruPress_SubReport " & strDtStart & "," & strDtEnd
End With
' now launch your report.
End Sub因此,一旦您运行上述操作,那么所使用的两个PT查询现在都已安装完毕,并准备就绪。如果您基于上述两个查询启动一个报告,那么它们将尊重您所拥有的标准。请记住,您可以在打开的报告中添加额外的"where“子句,但是客户端仍然会根据上面的PT查询提取您拥有的任何数据(视图实际上更好--因为您不能麻烦使用PT查询,简单地将所有条件发送到open report命令,access只会根据传递的标准拉下管道-记录)。这意味着您以前为报表提供过滤器的现有VBA代码将像以前一样工作。而且,通过使用视图而不是PT查询(特别是当您为openreport命令提供附加条件时),您倾向于获得同样好的性能(如果不是更好的话)。
另外,因为通常会格式化sql server和PT查询的日期,所以我有一个例程来为我格式化日期。在上面,我使用了qudateSQLt (包括时间)。因此,所使用的便捷的功能如下所示:
Public Function qudateSQLt(myDate As Variant) As String
' returns a formatted string of date, surrounded with # signs
' format is mm/dd/yyyy as required for sql, regardless of date setting
If IsNull(myDate) = True Then
qudateSQLt = ""
Else
' use ISO date format
qudateSQLt = "'" & Format(myDate, "yyyy-mm-dd HH:NN:SS") & "'"
End If
End Functionhttps://stackoverflow.com/questions/58649906
复制相似问题