SQL -VB - Оценивает ли он else, даже если if истинно?

Я пытаюсь предотвратить отображение #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) в любую ячейку, у которой есть потенциал для деления на ноль проблем.

5
задан ChrisCa 12 August 2011 в 14:01
поделиться