我在我的文本框下面的表达式可为空的布尔输入参数:

=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"))

(无法测试和希望不会是正确的: - )

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top