una sobre prohibición porque por numero justificación infinito indeterminada error entre división dividir dividido cuanto cuando cero reportviewer

reportviewer - sobre - porque dividir entre cero es error



ReportViewer División por cero (3)

Tiene que haber una manera más bonita que esta, pero esto debería funcionar:

=IIF(Fields!F1.Value <> 0, Fields!F2.Value / IIF(Fields!F1.Value <> 0, Fields!F1.Value, 42), 0)

Tengo algunas fórmulas en mis informes, y para evitar la división por cero me gusta esto en el campo de expresión:

= IIF (Fields! F1.Value <> 0, Fields! F2.Value / Fields! F1.Value, 0)

Esto normalmente funciona bien, pero cuando tanto F1 como F2 son cero, obtengo "#Error" en el informe, y recibo esta advertencia: "La expresión de valor para el cuadro de texto ''textbox196'' contiene un error: Intento dividir por cero. "

¿Porqué es eso?


IIF () es solo una función, y al igual que con cualquier función, todos los argumentos se evalúan antes de llamar a la función, incluidos los Fields!F2.Value/Fields!F1.Value . En otras palabras, intentará dividir por cero a pesar de la Fields!F1.Value <> 0 .


Sin embargo, puedes usar

if Fields!F1.Value <> 0 then Fields!F2.Value/Fields!F1.Value else 0

lo cual debería funcionar, ya que no evalúa la cláusula then si la sección "if" es falsa.