2013-09-24 3 views
0

Отчет будет отображаться двумя колонками Foo и Barмс SSRS 2008 R2: Отображение вычисленных значений #ERROR

Некоторые Ряды Foo пустуют Некоторые из них имеют численное значение:

Foo: 
+----+ 
| | 
+----+ 
|10.0| 
+----+ 

затем Там находится бар колонка, эта колонка будет принимать значение от Foo и добавить 10 к ним, отчет должен давать результаты, как это:

Foo: Bar: 
+----+----+ 
| | | 
+----+----+ 
|10.0|20.0| 
+----+----+ 

То Выражение я использую, чтобы определить, является ли Foo числовым внутри бара:

=IsNumeric(ReportItems!FooBox.Value) 

И это результат, который Экспрессия Выход:

Foo: Bar: 
+----+-----+ 
| |False| 
+----+-----+ 
|10.0|True | 
+----+-----+ 

Хорошо, вот именно так, как я хочу это так далеко, что я пишу мое выражение таким образом:

=IIf(IsNumeric(ReportItems!FooBox.Value), 
      ReportItems!FooBox.Value +10, 
      "") 

Это позволит получить следующие результаты:

Foo: Bar: 
+----+------+ 
| |#Error| 
+----+------+ 
|10.0|20.0 | 
+----+------+ 

И самый Bizare, когда я удалить небольшое добавление в Truepart из ИМФ, он будет выполнять:

=IIf(IsNumeric(ReportItems!FooBox.Value), 
       ReportItems!FooBox.Value, 
       "") 

Foo: Bar: 
+----+------+ 
| |  | 
+----+------+ 
|10.0|10.0 | 
+----+------+ 

Это почти как если бы «неправильно» часть троичного оператора запускается на выполнении Во всяком случае, таким образом, генерируя это castError или что бы это ни было.

Как я могу преобразовать значения правильно, чтобы показать результаты, как описано ранее?

+0

Возможный дубликат [SSRS hide #Error, отображаемый в ячейке] (http://stackoverflow.com/questions/9144312/ssrs-hide-error-displayed-in-cell) Я проголосовал за закрытие: ваш вопрос по существу является повторяется несколько других. –

+0

Другой ответ: http://stackoverflow.com/questions/1204179/does-the-iif-function-compute-both-paths-in-ssrs-or-is-it-short-circuited –

ответ

1

Действительно - использование IIf приведет к тому, что оба утверждения (истинные и ложные) будут искажены, что приведет к ошибке, которую вы получаете.

быть в вашей ситуации, я хотел бы создать свою собственную функцию, чтобы справиться с этим - вы можете поместить его в поле Код вашего отчета (нажмите вне зоны страницы, чтобы получить доступ к отчету объекта)

вашей функция может выглядеть следующим образом :

Public Function MyAdd(val As Object) As Nullable(Of Integer) 
     If TypeOf(val) Is Integer Then 
      Return val + 10 
     Else 
      Return Nothing 
     End If 
End Function 

вам, возможно, придется играть с типами используемых (Object и Nullable Of Integer, может быть, не то, что будет работать для вас)

тогда, конечно, использовать MyAdd в своем выражении и передать ReportItems FooBox . Значение в качестве параметра

Смежные вопросы