Сервер отчетов - невозможно отобразить правильный входной параметр через Iif () или Switch () - PullRequest
1 голос
/ 26 мая 2009

У меня есть логический входной параметр с допустимым значением Nullable со следующим выражением в моем текстовом поле:

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

, и я пытаюсь отобразить это на основе значения Сортировка входной параметр

Null = "Все"

True = "Sorted"

False = "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 Designer v 8.0

Редактировать # 1: По запросу

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

Это код, который вы запрашивали?

Ответы [ 3 ]

0 голосов
/ 26 мая 2009

Если это параметр булева типа, семантически неверно проверять его, как если бы это была строка.

Вы можете использовать IsNothing(Parameters!Sorted.Value) для проверки на нулевое значение, а затем Parameters!Sorted.Value = True (без кавычек) для второго случая.

Я признаю, что не запустил Visual Studio, чтобы проверить, нормально ли это с обработкой логических параметров, как если бы они были строкой, но ошибка, которую вы получаете, звучит так Эту ошибку обычно выдают Parse методами, например, если вы делаете Int32.Parse("34.32"), или, как я помню, я помню. Я предполагаю, что RS выполняет автоматический анализ, чтобы типы данных совпадали, а оператор равенства мог сделать свое дело.

0 голосов
/ 26 мая 2009

Почему бы не изменить логику для явного тестирования на True или False, а затем перейти к «All»? И не беспокоясь о строке, True против "true" и т. Д.

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

(Не могу проверить, и надеюсь, что НЕ правильно: -)

0 голосов
/ 26 мая 2009

Хорошо, я думаю, что ваша проблема может быть в том, что ваш DataType является логическим, а вы указываете пустое значение. Вы не можете этого сделать.

Вместо этого попробуйте указать ключевое слово Nothing:

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