在SSRS中,有没有一种方法可以有一个名为“付款周期”的参数,只允许选择特定的日期范围?例如,仅允许 09/19/2016 到 09/25/2016,不允许 09/20/2016 到 09/26/2016。任何周一至周日的组合都可以,但除此之外,就不可以了。
我正在考虑一个提供这些范围的下拉列表(而不是两个不同的参数),但不确定如何使其工作。
我将使用单个参数作为开始日期,并将结束日期计算为过去 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
我一直使用 2 个参数来表示日期范围。您必须确保您的查询考虑了这些参数。我通常使用@StartDate和@EndDate
WHERE <columnName> BETWEEN @StartDate AND @EndDate
只要您在查询中声明两个参数就应该没问题。当您在参数中使用日期/时间数据类型时,您将获得一个不错的日期选择器。这至少每次都对我有用。
我有三个参数:Payperiod、PayperiodStartDate 和 PayperiodEndDate。我希望为付款期所做的选择自动将开始日期和结束日期更改为相同的选择。关于如何做到这一点有什么想法吗?谢谢你