在SSRS中,有没有办法让一个名为“支付期”的参数只允许选择特定的日期范围?例如,仅允许2016年9月19日至2016年9月25日,并且不允许09/20/2016至2016年9月26日。任何周一至周日的组合都没问题,但除此之外,没有。
我在考虑提供这些范围的下拉列表(而不是两个不同的参数),但我不确定如何使其工作。
答案 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.