带有Now()的SSRS 2008R2报表参数默认不自动刷新

时间:2011-12-11 20:13:25

标签: reporting-services ssrs-2008 reportbuilder

系统 - 使用报告构建器3.0的SSRS 2008R2(如果您认为答案在那里,则为BIDS)

目标 - 创建一个报告,显示每个销售区域过去24小时的销售数据。报告需要每10分钟刷新一次,并始终显示上次刷新后的最后24小时。但是 - 用户仍然需要能够更改时间范围。

我做了什么?

  1. 构建一个报告,根据3个参数显示单个区域的销售数据:StartTime,EndTime,RegionCode。让我们称之为RegionalSales
  2. 构建了一个包含RegionalSales多个子报表的主报表。主报告有2个参数 - StartTime(默认值为dateadd(“h”, - 24,Now()))和EndTime(默认值为Now())。我将StartTime和EndTime发送到子报表,并为每个子报表分配了它自己的区域。
  3. 我已将主报告的自动刷新属性设置为600。
  4. 结果 - 起初一切看起来都很完美 - 主报告加载,显示的数据对于加载时间是正确的(比方说22:08)。但是,在自动刷新(发生在22:18)之后,数据仍然是22:08。

    问题在于,在报告的第一次加载时,参数会按照我所说的(StartTime = 10/12/2011 22:08 & EndTime = 11/12/2011 22:08)获得默认值。 但是,在自动刷新而不是更新(So I'll get StartTime = 10/12/2011 22:18 & EndTime = 11/12/2011 22:18)的参数时,我仍然会获得旧值(StartTime = 10/12/2011 22:08 & EndTime = 11/12/2011 22:08)

    任何关于原因的想法,以及如何更改此内容?

    谢谢!

1 个答案:

答案 0 :(得分:1)

如果我理解正确......

不幸的是,除非用户手动点击“查看报告”按钮,否则报告参数仅在第一次加载时获取其值。

为了解决这个问题,我尝试将日期参数转换为不使用默认值,而是从查询中获取它们的值,并使用与RDBMS等效的GETDATE()。如果我没有弄错,这将要求你在报告中添加另一个DataSet ......但它实际上并不是一个数据集,因为它的查询只是SELECT GETDATE()[或者你的RDBMS的等价物]和无论你需要做什么转变。