1

我的文本框中有一个可以为空的布尔输入参数,其中包含以下表达式:

=iif(Parameters!Sorted.Value="","All",iif(Parameters!Sorted.Value="True","Sorted","Unsorted"))

我正在尝试根据Sorted输入参数的值来显示它

空=“全部”

True =“已排序”

False = "未排序"

我还尝试了以下 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 Designer v 8.0

编辑#1:每个请求

<ReportParameter Name="Sorted">
  <DataType>Boolean</DataType>
  <Nullable>true</Nullable>
  <Prompt>Sorted</Prompt>
</ReportParameter>

这是您要求的代码吗?

4

3 回答 3

0

好的,我认为您的问题可能是您的 DataType 是布尔值,并且您指定了一个空白值。你不能这样做。

相反,请尝试指定关键字 Nothing:

=iif(Parameters!Sorted.Value=nothing,"All",iif(Parameters!Sorted.Value="True","Sorted","Unsorted"))
于 2009-05-26T18:01:51.880 回答
0

如果它是布尔类型参数,则将其视为字符串进行检查在语义上是不正确的。

您可以使用IsNothing(Parameters!Sorted.Value)检查空值,然后Parameters!Sorted.Value = True(不带引号)检查第二种情况。

我承认我没有启动 Visual Studio 来检查通常是否可以将布尔参数视为字符串,但是你得到的错误听起来是这样的。该错误通常是由Parse方法引发的,比如如果你这样做Int32.Parse("34.32"),或者我似乎记得。我猜 RS 正在做一个自动解析,以便数据类型匹配并且相等运算符可以发挥它的魔力。

于 2009-05-26T18:25:41.630 回答
0

为什么不更改逻辑以显式测试 True 或 False,然后直接切换到“All”?而且不用担心字符串,True vs "true" 等

=iif(Parameters!Sorted.Value,"Sorted",iif(NOT(Parameters!Sorted.Value), "Unsorted","All"))

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

于 2009-05-26T18:39:32.647 回答