首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行访问报告,包括另一个具有相同日期范围的非关联附加报表。

运行访问报告,包括另一个具有相同日期范围的非关联附加报表。
EN

Stack Overflow用户
提问于 2019-10-31 19:14:18
回答 1查看 76关注 0票数 1

三个访问报告使用两个传递查询和一个标准SELECT查询,所有这些都是单独工作的。一个主报表由一个命令按钮开始,该命令按钮从表单中获取日期范围的两个日期。在每次使用之后,我可以在ptq中看到这些日期参数的变化。一个附加报告基于另一个ptq运行,使用为日期范围提供的“默认”日期(在从主报表调用附加报告时没有任何重置这些日期的内容--这是我的问题或断开连接),另一个在标准select查询上使用WHERE子句调用表单中的日期。这两份报告为主要报告提供了额外但不同的数据。我不相信它们将是带有链接的主字段和子字段的子报表,因为主报表数据和附加的报表数据不相关联。问题是日期范围没有传递给附加报告的一个ptq,因此日期永远不会更改,并且只会返回其ptq中的“默认”日期范围。以下是两个ptq:

代码语言:javascript
复制
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的日期参数?

另一个问题是,这些附加报告位于报表页脚部分,因此它们的数据将在主报表的记录列表之后立即打印。但是,由于我使用的是两列,因此所附报表的数据总是打印在下一页上,而不是在第一列底部(通常)或第二列底部(给定足够的记录),即使在列出的记录末尾有足够的空间时也是如此。我怎样才能直接按照第一份清单制作所附的报告?这应该是另一个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-31 20:05:57

在启动报表之前,您可以始终设置PT查询。

所以您可以使用这样的代码:

代码语言:javascript
复制
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 (包括时间)。因此,所使用的便捷的功能如下所示:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58649906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档