Datapayasadas

Septiembre 15, 2009

Hack Reporting Services 2005 y la división por cero

Archivado en: Reporting Services — Etiquetas:, , , — pabloide86 @ 9:14 am

Buenas amigos… me he encontrado con este problemita de la división por cero en Reporting Services 2005.

Lo primero que pensé fue en hacer algo como esto:

=IIF(Fields!Numerador.Value <> 0, (Fields!Numerador.Value) / (Fields!Denominador.Value), 0)

Pero resulta que el IIF siempre ejecuta tanto la expresión de la parte verdadera como la expresión de la parte falsa y por eso siempre va a devolver #Error.

Ahora bien, una pequeña chanchada que podemos hacer para evitar ésto es:

=IIF(Fields!Numerador.Value <>  0, (Fields!Numerador.Value) / (IIF(Fields!Denominador.Value <> 0, Fields!Denominador.Value  0, 1), 0)

Qué fue lo que hicimos? Simplemente engañamos al IIF cuando el denominador es 0. Cuando eso ocurre de todas formas el primer IIF va a devolver 0 pero ya la expresion (Fields!Numerador.Value) / (Fields!Denominador.Value) no va a dar #Error ya que estaríamos dividiendo por 1 y no por 0.

No es lo mejor ni lo mas óptimo, pero remitiendome a las palabras de mi amigo Carlos A.:
“Primero que funcione, despues que funcione bien, y por último que funcione como uno quiere.”

Salutes!

Aún no hay comentarios »

Aún no hay comentarios.

Canal RSS de los comentarios de la entrada. URI para TrackBack.

Deja un comentario

Blog de WordPress.com.