Reporting Service - Campo Calculado

25/02/2006 - 18:06 por Mirko | Informe spam
Hola:
Estoy tratando de calcular la división entre dos números en una columna
calculada
y como es lógico quiero evitar el error en el caso que el divisor sea cero

Ejemplo:
Divisor = 0
Dividendo = 10

=Iif(divisor = 0, 'nada', dividendo / divisor)

Reporting Service me dice que trato de dividir por cero, es como si evaluara
la expresión en todos los casos, la única manera que he encontrado para
que funcione es

= dividendo / iif(divisor = 0, 1, divisor)

O sea sustituir el divisor específicamente, yo no quiero dividir por 1 ni
por nadie,
solo quiero que no haga nada, o que haga cualquier cosa menos dividir.

A alguien le ha pasado esto o le encuentra la solución?

Gracias mil de antemano
 

Leer las respuestas

#1 Luis Miguel Blanco
26/02/2006 - 13:30 | Informe spam
Hola Mirko

Yo creo que este problema se debe a que en algunas ocasiones, el diseñador
de informes no actualiza correctamente los cambios que hayas hecho, en este
caso sobre el campo calculado, de forma que cuando vas a probarlo en la vista
previa del informe, el resultado obtenido no concuerda con los valores que se
esperan.

Yo he hecho la misma prueba, creando un informe contra una tabla que tenía
un campo numérico, y en algunos registros, el valor de este campo era cero.

A continuación he creado un campo calculado con la siguiente expresión:

=IIF(Fields!UNIDADESALMACEN.Value = 0, "", Fields!PRECIO.Value /
Fields!UNIDADESALMACEN.Value)

De forma que cuando el campo UNIDADESALMACEN es 0, el campo calculado
devuelve una cadena vacía.

Y al principio, cuando ejecutaba el informe en la vista previa, tras añadir
este campo, tampoco aparecían correctamente los datos.

Sin embargo, en la pestaña de vista previa del informe, hay una barra de
botones, en las que hay uno para actualizar el informe. Prueba a pulsarlo,
para que el diseñador de informes vuelva al origen de datos y lo actualice,
de forma que te presente de nuevo toda la información. Utilizando esta opción
he conseguido que me muestre correctamente los datos.

También procura que antes de ejecutar el informe en vista previa, guardar
todos los cambios que hayas hecho, aunque esto no debería influir, ya que a
pesar de no haber guardado los cambios tendría que mostrarte bien los datos,
pero es una buena costumbre 8-)

Pruébalo así y yo creo que ya te funcionará. En caso contrario, te puedo
enviar el proyecto de pruebas que yo he hecho.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Mirko" wrote:

Hola:
Estoy tratando de calcular la división entre dos números en una columna
calculada
y como es lógico quiero evitar el error en el caso que el divisor sea cero

Ejemplo:
Divisor = 0
Dividendo = 10

=Iif(divisor = 0, 'nada', dividendo / divisor)

Reporting Service me dice que trato de dividir por cero, es como si evaluara
la expresión en todos los casos, la única manera que he encontrado para
que funcione es

= dividendo / iif(divisor = 0, 1, divisor)

O sea sustituir el divisor específicamente, yo no quiero dividir por 1 ni
por nadie,
solo quiero que no haga nada, o que haga cualquier cosa menos dividir.

A alguien le ha pasado esto o le encuentra la solución?

Gracias mil de antemano



Preguntas similares