在我的季度报告中,我试图验证两个参数StartDate
和EndDate
。
我首先检查日期之间的差异是否为2个月:
Switch(DateDiff(
DateInterval.Month, Parameters!StartDate.Value, Parameters!EndDate.Value) <> 2,
"Error message")
然后我尝试添加StartDate
是否是月的第一天而EndDate
是月的最后一天:
And (Day(Parameters!StartDate.Value) <> 1
And Day(DATEADD(DateInterval.Day,1,Parameters!EndDate.Value)))
所以整个表达式看起来像这样:
Switch(DateDiff(DateInterval.Month, Parameters!StartDate.Value, Parameters!EndDate.Value) <> 2
And
Parameters!IsQuarterly.Value = true
And
Day(Parameters!StartDate.Value) <> 1
And
Day(DATEADD(DateInterval.Day,1,Parameters!EndDate.Value))<>1),
"Error: Quarterly report must include 3 months")
但是,当日期之间的差异仍为2个月时,它会出错,但StartDate
和EndDate
不是整个期间的第一天和最后一天。
我很感激任何帮助:)
答案 0 :(得分:2)
我会说改变实现添加另外两个带季度和年份的参数 季度如Q1,Q2,Q3&amp; Q4,价值1,2,3&amp;分别为4和2012,2013,2014&amp;等等
现在根据选择的参数Qtr&amp;年份设置默认值start&amp;结束日期
=DateSerial(Parameters!Year.Value), (3*Parameters!Qtr.Value)-2, 1) --First day of Quarter
=DateAdd("d",-1,DateAdd("q",1,Parameters!Year.Value, (3*Parameters!Qtr.Value)-2, 1))) --Last day of quarter
这样做不需要进行任何验证bcz它总是得到正确的日期差异。
其他参考
First day of current quarter
=DateSerial(Year(Now()), (3*DatePart("q",Now()))-2, 1)
Last day of current quarter
=DateAdd("d",-1,DateAdd("q",1,DateSerial(Year(Now()), (3*DatePart("q",Now()))-2, 1)))