我正在Micrososft SQL Reporting Services中构建一个报告,我有两个日期字段,startDate和endDate。
我需要限制日期范围,至少在三十天(或一个月)内。例如,如果startDate是2012/01/01而endDate是2012/02/02,它应该引发错误消息,否则(差异小于30天),它可以继续。如何在报告服务时这样做?
答案 0 :(得分:2)
您可以使用数据集根据startDate参数为endDate参数提供默认值。
添加名为DefaultStartDate的数据集。将查询文本设置为:
select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) as [startDate];
添加名为startDate的参数。将类型设置为日期/时间并从DefaultStartDate查询中获取默认值:
添加名为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数据集中获取可用值:
答案 1 :(得分:1)
这是一个老问题,但有一个答案。该解决方案的高级解释是在报告属性中编写代码,添加包含用于验证参数的代码的隐藏参数,以及DataSet中的条件表达式。有关详细说明,请参阅以下链接:https://gugiaji.wordpress.com/2012/03/26/easy-step-by-step-ssrs-parameter-validation-using-code