Datapayasadas

septiembre 15, 2009

Hack Reporting Services 2005 y la división por cero

Filed under: 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!

Anuncios

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: