一个月的限制 - 报告服务

时间:2012-07-02 13:21:31

标签: reporting-services ssrs-2008

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

Default Values / Dataset=DefaultStartDate / Value=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数据集中获取可用值:

Available Values / DataSet=ValidEndDates / Value=endDate / Label=endDate

答案 1 :(得分:1)

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