2015-03-03 3 views
0

Как работает сравнение в отчетах? Я попробовал следующее выражение:Сравнение в reportviewer не работает

=Iif(IsNothing(Fields!COEF.Value), 0, Fields!SUM.Value - Fields!SUM.Value/Fields!COEF.Value) 

Он никогда не был 0. Тогда я изменил SQL запрос, чтобы сделать COEF = 0, когда COEF равна нулю.

=Iif(Fields!COEF.Value = 0, 0, Fields!SUM.Value - Fields!SUM.Value/Fields!COEF.Value) 

Но он всегда вычисляет выражение.

+0

И есть строка в наборе результатов, где COEF равен нулю? –

+0

Конечно. Но я получаю там #error. Кажется, он пытается делить на ноль ... –

+0

Если я изменю делитель на константу, он работает правильно –

ответ

0

Проблема как True/False часть IIf оценивается, прежде чем вы получите результаты. Но вы можете написать свою собственную простую функцию, чтобы преодолеть это ограничение.

E.g. - в вашем Отчет-> Сообщить Свойства-> Код

Public Function SafeDiv(n as decimal, d as decimal) as decimal 
    If d = 0 
    SafeDiv = 0 
    Else 
    SafeDiv= n/d 
    End If 
End Function  

И тогда в вашей собственности

=Fields!SUM.Value - Code.SafeDiv(Fields!SUM.Value, Fields!COEF.Value) 
+0

Я использовал еще один IIF.' = IIF (Fields! COEF.Value <> 0, Fields! SUM.Value - Fields! SUM.Value/IIF (Fields! COEF.Value = 0, 1, Fields! COEF.Value), Nothing) ' –