[英]SSRS: Two cascading date parameters do not refresh
我有一个带有三个参数的SSRS 2014报告:@Period(文本),@ FromDate(日期)和@ToDate(日期)。 他们首先通过从“期间”下拉列表(1月,2月,3月等)中选择一个值来协同工作。 根据您选择的时段,@ FromDate和@ToDate参数会相应更改以反映您的选择。 这很好用,但是当您选择一个新的期间后再选择一个新的期间时会出现问题,因为日期参数不会刷新。
我一直在寻找一些建议和解决方法,但是我还没有找到处理两个相关日期参数的方法。 有什么建议么?
一旦生成的“日期”参数将无法更改。 它没有级联功能,并且根据Microsoft的说法,这是设计使然(这是他们希望其行为的方式):
如前所述,级联查询中没有可用值/默认值的参数将不会刷新其默认值。
解决方法:创建一个单行数据集,用于计算DateFrom和DateTo日期(分别在单独的列中,具体取决于您的@Period参数),然后将数据集分配给这两个参数的可用值和默认值。 缺点:运行报表时将无法编辑值,因为字段是由数据集填充的。
这可以按预期方式工作,如果更改它们所依赖的参数,Microsoft不会刷新级联日期参数。 但是有可能解决它。
它需要两个数据参数的两个数据集,这些数据集返回一行,并且所需数据取决于@Period参数,例如
DECLARE @Dates as TABLE ([Period] INT, [Date] SMALLDATETIME)
INSERT INTO @Dates VALUES
(1,DATEADD(s, 86340, DATEADD(dd,-1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0))) )
,(2,DATEADD(DAY , 7-DATEPART(WEEKDAY,GETDATE()),DATEADD(MINUTE,- 1,DATEADD(DAY,0,DATEADD(day,DATEDIFF(day,0,GETDATE())+1,0)))) )
,(3,DATEADD(MINUTE,- 1,DATEADD(DAY,0,DATEADD(day,DATEDIFF(day,0,GETDATE()),0))))
SELECT
[Period]
,[Date]
FROM
@Dates
WHERE
[Period] = @Period
设置@Period参数的可用值也要匹配 ,并将数据参数的默认值设置为其匹配的数据集 。
现在,当您更改@Period参数时,它将强制重新运行日期数据集,并且您的日期参数将默认为新结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.