1

我正在 Micrososft SQL Reporting Services 中构建一个报告,并且我有两个日期字段,startDate 和 endDate。

我需要限制日期范围,至少在三十天(或一个月)内。例如,如果 startDate 是 2012/01/01 并且 endDate 是 2012/02/02,它应该引发错误消息,否则(相差不到三十天),它可以继续。我如何在报告服务中做到这一点?

4

2 回答 2

2

您可以使用数据集根据您的 startDate 参数为您的 endDate 参数提供默认值。

添加一个名为 DefaultStartDate 的数据集。将查询文本设置为:

select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) as [startDate];

添加一个名为 startDate 的参数。将类型设置为日期/时间并从 DefaultStartDate 查询中获取默认值:

默认值/数据集=DefaultStartDate/值=startDate

添加一个名为 ValidEndDates 的数据集。将查询文本设置为如下所示,以根据开始日期生成有效结束日期列表:

with A as
( select 1 as i UNION ALL select i+1 from A where i<30 )
select DATEADD(dd, i, @startDate) as [endDate] from A;

添加一个名为 endDate 的参数。将类型设置为日期/时间并从 ValidEndDates 数据集中获取可用值:

可用值 / DataSet=ValidEndDates / Value=endDate / Label=endDate

于 2012-07-02T21:50:14.573 回答
1

这是一个老问题,但有一个答案。解决方案的高级解释是在报表属性中编写代码,添加一个隐藏参数,其中包含验证参数的代码,以及数据集中的条件表达式。详细解释请看以下链接:https ://gugiaji.wordpress.com/2012/03/26/easy-step-by-step-ssrs-parameter-validation-using-code

于 2016-04-04T21:35:39.367 回答