SSRS:两个级联日期参数不刷新

时间:2016-12-09 12:30:39

标签: sql-server reporting-services parameters report

我有一份SSRS 2014报告,其中包含三个参数:@ Period(文本),@ IceDate(日期)和@ToDate(日期)。它们通过首先从Period下拉列表(1月,2月,3月等)中选择一个值来协同工作。根据您选择的周期,@ FromDate和@ToDate参数会相应更改以反映您的选择。这样做效果很好,但是在选择了一个新句点之后会出现问题,因为日期参数不会刷新。

我一直在寻找一些建议和解决方法,但我还没有找到一个处理两个相关日期参数的方法。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

生成的Date参数无法更改。它没有级联设施,根据微软的设计(它是他们希望它的表现方式):

Follow this link please

答案 1 :(得分:0)

如前所述,级联查询中没有可用值/默认值的参数不会刷新其默认值。

解决方法:创建一个单行数据集,用于计算DateFrom和DateTo日期,每个日期位于单独的列中,具体取决于您的@Period参数,并将数据集分配给两者的可用默认值你的参数。缺点:在运行报表时,您将无法编辑值,因为字段由数据集填充。

答案 2 :(得分:0)

这是按预期工作的,如果您更改它们所依赖的参数,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参数too match的可用值,并将数据参数的默认值设置为matching datasets

现在,当您更改@Period参数时,它会强制重新运行日期数据集,并且您的日期参数将默认为新结果。