ms-access - 运行访问报告,包括另一个具有相同日期范围的非关联附加报告
问题描述
三个 Access 报表使用两个传递查询和一个标准 SELECT 查询,并且全部单独工作。一个主报告以一个命令按钮开始,该按钮从表单中获取一个日期范围内的两个日期。每次使用后,我可以在 ptq 中看到这些日期参数的变化。其中一个附加报告基于另一个 ptq 运行,使用为日期范围提供的“默认”日期(没有什么可以重置 ptq 的这些日期,因为从主报告中调用附加报告 - 这是我的问题或断开连接我相信),另一个在标准选择查询中使用 WHERE 子句调用表单中的日期。这两个报告向主报告提供了额外但不同的数据。我不 t 相信它们将是带有链接的主字段和子字段的子报表,因为主报表数据和附加的报表数据没有关联。问题是日期范围没有传递给附加报告的一个 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 的日期参数?
另一个问题是,这些附加报表位于报表页脚部分,因此它们的数据将在主报表的记录列表之后立即打印。但是,由于我使用的是两列,因此即使在末尾有足够的空间时,所附报告的数据也总是打印在下一页而不是第一列(通常)或第二列(给定足够的记录)的底部列出的记录。我怎样才能使附加的报告直接跟随第一个列表?这应该是另一个问题吗?
解决方案
好吧,您始终可以在启动报告之前设置 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查询,然后简单地将所有条件发送到打开报告命令,访问只会根据传递的条件拉下管道记录。这意味着您以前为报告提供过滤器的现有 VBA 代码将像以前一样工作。
另外,因为经常会为 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 Function
推荐阅读
- sql-server - 由不同用户运行时,SQL 查询中出现 MAX 和 COALESCE 的奇怪结果
- c# - C# & SQL Server 存储过程多个插入动作,影响?
- r - 检查列是否存在,如果它确实检查了一些关于它的东西
- python - tkinger - 如何在动态创建的网格中更新正确的小部件?
- python - 他们为什么在这里使用 .first ?
- python - 将 lambda 表达式转换为简单函数
- postgresql - Google Cloud SQL PG11:无法调整共享内存段的大小
- webgl - 如何从纹理格式属性中选择 WebGL GLSL 采样器类型?
- reactjs - 简单的原子重置和验证检查未按预期工作
- javascript - 如何使正则表达式条件语句为假