SSRS表达式给出了iif条件的错误

时间:2014-02-11 19:29:26

标签: reporting-services boolean expression iif ssrs-expression

我在SSRS报告中有一个文本框的表达式

=IIF((Fields!Spot.Value = True), "SPOT", 
     MonthName(Fields!Codes_MonthFromIDfk.Value,true).ToUpper().ToString() & "-"
         & MonthName(Fields!Codes_MonthToIDfk.Value,true).ToUpper().ToString())

数据库中的“Spot”列是数据类型的列。它有0或1.当我有1 / True它应该打印SPOT或像JAN-FEB这样的月份。当Spot列的值为1时,我收到此错误。

  

“textrun的值表达式   'Textbox32.Paragraphs [0] .TextRuns [0]'包含错误:参数   '月'不是有效值。“

当我删除虚假部分并输入“ABCD”时,我得到了正确的文本框输出。 SPOT(用于true)或ABCD(用于false)。目前,当它不是1时,它显示JAN-FEB(这是所需的输出)。如果为1则显示为#Error。这个表达有什么问题?如果您需要更多信息,请询问。感谢。

编辑:

Public Function FormatMonths(ByVal spot As Boolean, ByVal from As Integer, ByVal to As        Integer) As String
    If spot Then
    Return "SPOT"
Else
    Return  MonthName(from,true).ToUpper().ToString() & "-" & MonthName(to,true).ToUpper().ToString()
End If
End Function

表达:

=Code.FormatMonths(Fields!Spot.Value, 1,2)

1 个答案:

答案 0 :(得分:1)

在决定使用哪个表达式之前,IIF运算符将始终评估两个表达式。一个可能的问题解决方案是创建一个自定义函数,它可以满足您的需要,并在文本框中使用它:

=Code.FormatMonths(Fields!Spot.Value, Fields!Codes_MonthFromIDfk.Value, Fields!Codes_MonthToIDfk.Value)

要创建自定义功能,请转到报告>报告属性>代码并输入以下定义:

Public Function FormatMonths(ByVal spot As Boolean, ByVal fromMonth As Integer, ByVal toMonth As Integer) As String
    If spot Then
        Return "SPOT"
    Else
        Return  MonthName(fromMonth,true).ToUpper().ToString() & "-" & MonthName(toMonth,true).ToUpper().ToString()
    End If
End Function