如何在不创建表达式数据集的情况下限制一个月的 ssrs 报告
How to limit ssrs report for a month without creating expression dataset
我创建了一个 SSRS 报告,它使用许多子查询和连接,它使用 2 个参数 StartDate 和 EndDate。
我想将我的报告限制为 1 个月,即用户可以 select 任何开始日期,但他们的结束日期应小于或等于 31 天。如果他们 select 结束日期 >31 那么它应该显示错误消息。
如果限制使用一个月而不是 31 天,这将很有帮助,因为 2 月只有 28/29 天,有些月份只有 30 天。
注意:我看到很多解决方案都提到创建一个包含表达式的新数据集。由于我的查询太长,我不想创建新的数据集。
提前致谢。
由于您想限制用户 select 的日期,我将创建一个可能日期的数据集,并让用户 select 从中获取第二个参数。
DECLARE @END_DATE DATE = DATEADD(MONTH, 1, @START_DATE)
;WITH GETDATES AS
(
SELECT @START_DATE AS THEDATE
UNION ALL
SELECT DATEADD(DAY,1, THEDATE) FROM GETDATES
WHERE THEDATE < @END_DATE
)
SELECT * FROM GETDATES
OPTION (MAXRECURSION 0)
我创建了一个 SSRS 报告,它使用许多子查询和连接,它使用 2 个参数 StartDate 和 EndDate。 我想将我的报告限制为 1 个月,即用户可以 select 任何开始日期,但他们的结束日期应小于或等于 31 天。如果他们 select 结束日期 >31 那么它应该显示错误消息。 如果限制使用一个月而不是 31 天,这将很有帮助,因为 2 月只有 28/29 天,有些月份只有 30 天。
注意:我看到很多解决方案都提到创建一个包含表达式的新数据集。由于我的查询太长,我不想创建新的数据集。
提前致谢。
由于您想限制用户 select 的日期,我将创建一个可能日期的数据集,并让用户 select 从中获取第二个参数。
DECLARE @END_DATE DATE = DATEADD(MONTH, 1, @START_DATE)
;WITH GETDATES AS
(
SELECT @START_DATE AS THEDATE
UNION ALL
SELECT DATEADD(DAY,1, THEDATE) FROM GETDATES
WHERE THEDATE < @END_DATE
)
SELECT * FROM GETDATES
OPTION (MAXRECURSION 0)