我在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)
答案 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