Я пытаюсь предотвратить отображение #error в создаваемом мной отчете
Это происходит, когда я делю 2 числа, и одно из них равно нулю
Поэтому я попытался использовать оператор if / switch, чтобы проверить, равно ли какое-либо из двух чисел нулю, прежде чем выполнять деление:
=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 истинно
РЕДАКТИРОВАТЬ
Итак, похоже, что условие 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 (Поле! ToBeDivided.Value, Поле! DividingBy.Value) в любую ячейку, у которой есть потенциал для деления на ноль проблем.