“支付期”的SSRS参数

时间:2016-10-19 13:14:18

标签: sql-server sql-server-2008 reporting-services

在SSRS中,有没有办法让一个名为“支付期”的参数只允许选择特定的日期范围?例如,仅允许2016年9月19日至2016年9月25日,并且不允许09/20/2016至2016年9月26日。任何周一至周日的组合都没问题,但除此之外,没有。

我在考虑提供这些范围的下拉列表(而不是两个不同的参数),但我不确定如何使其工作。

2 个答案:

答案 0 :(得分:1)

我会使用单个参数作为开始日期,并将结束日期计算为过去6天(如果需要)。

对于参数,我会在使用数据的单个开始日期字段时为标签创建一个字段。

参数查询:

DECLARE @START_DATE DATE = '01/01/2016' 
DECLARE @END_DATE  DATE  = '10/31/2016'

;WITH GETDATES AS  
    (  
        SELECT @START_DATE AS THEDATE
        UNION ALL  
        SELECT DATEADD(DAY, 1, THEDATE) FROM GETDATES  
        WHERE THEDATE < @END_DATE  
)

SELECT THEDATE, CONVERT(VARCHAR(10), THEDATE, 101) + ' - ' + CONVERT(VARCHAR(10), DATEADD(D, 6, THEDATE), 101) AS PAYPERIOD
FROM GETDATES 
WHERE DATEPART(WEEKDAY, THEDATE) = 2
OPTION (maxrecursion 0)

这会让用户看到日期范围,但只会将开始日期传递给报告,以便根据需要使用。

DATE        PAYPERIOD

2016-01-04  01/04/2016 - 01/10/2016

2016-01-11  01/11/2016 - 01/17/2016 

2016-01-18  01/18/2016 - 01/24/2016

答案 1 :(得分:0)

I have used 2 parameters for a date range all the time. You would have to make sure your query account for these parameters. I usually use @StartDate and @EndDate

WHERE <columnName> BETWEEN @StartDate AND @EndDate

As long as you declare the two parameters in you query you should be ok. When you use the Date/Time data type in the parameter then you will get a nice date picker to use. This at least works for me every time.