繁体   English   中英

SSRS:两个层叠日期参数不会刷新

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM