报表服务器 - 无法通过IIF()或开关,显示正确的输入参数()
-
06-09-2019 - |
题
我在我的文本框下面的表达式可为空的布尔输入参数:
=iif(Parameters!Sorted.Value="","All",iif(Parameters!Sorted.Value="True","Sorted","Unsorted"))
和我试图基于所述值的排序强>输入参数
显示这些空= “全部”
真= “排序”
假= “未分类”
我也曾尝试以下switch语句而没有任何运气:
=Switch(Parameters!Sorted.Value="","All",Parameters!Sorted.Value="True","Sorted",Parameters!Sorted.Value="False","Unsorted")
当报告呈现我收到以下错误每次:
The value expression for the textbox ‘textbox7’ contains an error: Input string was not in a correct format.
我使用VS2003和SSR设计v 8.0
编辑#1:每请求
<ReportParameter Name="Sorted">
<DataType>Boolean</DataType>
<Nullable>true</Nullable>
<Prompt>Sorted</Prompt>
</ReportParameter>
这是您请求的代码?
解决方案
好吧,我觉得你的问题可能是你的数据类型是布尔型,并且您指定一个空值。你不能做到这一点。
相反,尝试指定关键字无:
=iif(Parameters!Sorted.Value=nothing,"All",iif(Parameters!Sorted.Value="True","Sorted","Unsorted"))
其他提示
如果它是一个布尔类型参数它不是语义上正确的,以检查它,就好像它是一个字符串。
可以使用IsNothing(Parameters!Sorted.Value)
来检查空,然后Parameters!Sorted.Value = True
(没有引号)对于第二种情况。
我承认我没火了Visual Studio来检查是否能正常是好的,有,好像他们是一个字符串处理布尔参数,但这个错误你得到的声音如此。这种错误通常是由Parse
方法抛出,就像如果你做Int32.Parse("34.32")
,还是让我依稀记得。我猜RS是做一个自动解析,以使数据类型匹配和平等的运营商可以做它的魔力。
为什么不改为明确地测试真或假的逻辑,然后通过拖放到“所有”?而无需担心字符串,真正与“真”等。
=iif(Parameters!Sorted.Value,"Sorted",iif(NOT(Parameters!Sorted.Value), "Unsorted","All"))
(无法测试和希望不会是正确的: - )
不隶属于 StackOverflow