0

我在 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]' 的值表达式包含错误:参数 'Month' 不是有效值。”

当我删除错误部分并输入“ABCD”时,我得到了文本框的正确输出。SPOT(为真)或 ABCD(为假)。当前,当它不是 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)
4

1 回答 1

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
于 2014-02-11T20:11:38.837 回答