Я пытаюсь предотвратить отображение #error в создаваемом отчете
Это происходит, когда я делю 2 числа, и одно из них равно нулю
Поэтому я попытался использовать if /Переключение оператора, чтобы проверить, если любое из 2 чисел 0 перед выполнением деления:
=IIf(Fields!Field1.Value = 0
or Fields!Field2.Value = 0
or Not(IsNumeric(Fields!Field1.Value))
or Not(IsNumeric(Fields!Field2.Value)),
0,
(Fields!Field1.Value/Fields!Field2.Value)*100
)
=Switch(
Fields!Field1.Value = 0 or Fields!Fields.Value = 0, 0,
IsNumeric(Fields!Field1.Value) or IsNumeric(Fields!Fields.Value), (Fields!Field1.Value/Fields!Fields.Value)*100
)
Оба из них по-прежнему выдают ошибку.Кажется, что условие else все еще оценивается, даже если выражение if истинно
Если я изменю код, чтобы просто напечатать X или Y для if и else, тогда это сработает - так что ошибки нетв утверждении if
Это кажется мне нелепым
Скажите, пожалуйста, что я делаю что-то не так?Я не могу поверить, что язык оценит else, когда if истинно
EDIT
Так что, похоже, условие else оценивается.Так как же обойти потенциальное деление на ноль ошибок?
вот ответ, взятый из: http://www.sqlservercentral.com/Forums/Topic442497-150-1.aspx#bm1115960
Другой вариант (особенно если у вас есть отчет со многимивыражения, которые могут привести к делению на ноль, - это использовать функцию пользовательского кода.
Во вкладке «Код» в окне «Свойства отчета» введите что-то вроде следующего:
Public Function DivideBy(ByVal Exp1, ByVal Exp2)
If Exp2 = 0 Then
DivideBy = 0
Else : DivideBy = Exp1 / Exp2
End If
End Function
Затем вставьтевыражение = code.DivideBy (Field! ToBeDivided.Value, Field! DividingBy.Value) в любую ячейку, которая имеет потенциал для деления на ноль проблем.