2014-12-04 146 views
0

我想在SSRS报告中设置默认参数值。我想测试当前日期以查看它是否等于一周的第一天(在本例中是星期一)。如果是一周的第一天,那么我希望默认值是当前日期减去2天,如果它不是一周的第一天,那么我希望默认值是当前日期减1天。比较今天的日期和本周的第一天

我似乎有一个语法问题,但它不告诉我在哪里。我的参数是StartDateEndDate

这是我已经试过:

=iif(weekday(Today(),FirstDayOfWeek.Monday)==1,DateAdd("d",-2,today(),DateAdd("d",-1,today()) 

这是一般的错误,我得到:

The value expression for the report parameter 'StartDate' contains eror:[BC30201] Expression expected. 

我要去哪里错了?

回答

1

您试图在SSRS VBA表达式中使用Sql语法。 SSRS VBA允许对Sql进行日期操作的表达式非常类似,主要区别在于使用DateInterval枚举。

所以,你的表达需要使用VBA语法:

=IIF(Weekday(Today, FirstDayOfWeek.Monday) = 1, DateAdd(DateInterval.Day, -2, Today), DateAdd(DateInterval.Day, , -1, Today)) 
+0

在我的情况下,问题是缺少括号和双等号。 IIF声明使用一个等号 – 2014-12-05 17:55:23

1

看起来您在if语句的第一个逻辑部分之后缺少一个结束括号,而另一个关闭了该语句。

=iif(weekday(Today(),FirstDayOfWeek.Monday)==1,DateAdd("d",-2,today()),DateAdd("d",-1,today())) 
+0

仍然得到同样的错误信息 – 2014-12-04 18:01:20

+0

我也if语句使用单一=而不是双。谢谢你找到丢失的圆括号 – 2014-12-04 18:09:46