在iif()语句中组合字符串和monthName返回类型时的SSRS 2012 #error

时间:2012-07-17 19:57:51

标签: string reporting-services iif

在SSRS 2012中使用iif()语句时,我遇到了一个非常奇怪的错误。

我试图选择在月份值不等于99时打印一个月的名称,当它等于99时,我想打印字符串“YTD”我试图使用声明:

= iif(Fields!Month.Value = 99,“Y.T.D”,MonthName(Fields!Month.Value,true))

每当我尝试使用这个MonthName()函数时,月份都会正确打印,但99字段会返回“#error”。当我将月份作为整数或者我只是放入一个虚拟字符串时,这个语句工作正常,我已经尝试将MonthName()作为一个字符串(例如“cStr(MonthName())”)。

任何想法???

2 个答案:

答案 0 :(得分:2)

回答我自己的问题/引用我在Syed Qazafi Anjum微软论坛上收到的另一个答案:

=iif(Fields!Month.Value=99,"Y.T.D",monthname(iif(Fields!Month.Value<=12,Fields!Month.Value,12),true))

取自: http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/d484d8d4-3809-4850-ada6-8cac1239bfce/

答案 1 :(得分:1)

即使月份数为99,也会评估MonthName函数。使用switch代替iif来解决此问题。