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

Preguntas similare

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



Respuesta Responder a este mensaje
#2 Mirko
01/03/2006 - 06:42 | Informe spam
Hola Luismi:
Muchas gracias por responderme y por tu tiempo, ya habia probado a guardar
el reporte y tambien habia intentado refrescar los datos y no me funcionaba,
pruebo con los reportes implementados en el servidor y me hace lo mismo,
hice la prueba tal como me dices en sql server y funciona como tu dices,
pero con la base de datos Oracle no me funciona de ninguna manera, lo más
extraño es que si se trata de multiplicacion, suma o resta no hay problemas,
el problema es con la división.
Aqui alguien encontró una solución para salir del problema ahora, es poner
otro IIF a la hora de dividir:

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

Es la unica forma que hemos encontrado para salir del problema temporalmente
pero luce mal

Si alguien tiene la solución se lo agradeceria mucho

Saludos
Mirko


"Luis Miguel Blanco" escribió
en el mensaje news:
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



Respuesta Responder a este mensaje
#3 Luis Miguel Blanco
02/03/2006 - 20:41 | Informe spam
Hola Mirko

El problema tiene aspecto de ser por algo debido a Oracle, aunque en este
sentido no sé qué puede estar pasando, ya que no trabajo con esta base de
datos y desconozco si realmente es por el propio Oracle 8-(

Me alegra que por lo menos puedas conseguir ejecutarlo, aunque sea con un
pequeño parche que no quede muy elegante ;-)
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Mirko" wrote:

Hola Luismi:
Muchas gracias por responderme y por tu tiempo, ya habia probado a guardar
el reporte y tambien habia intentado refrescar los datos y no me funcionaba,
pruebo con los reportes implementados en el servidor y me hace lo mismo,
hice la prueba tal como me dices en sql server y funciona como tu dices,
pero con la base de datos Oracle no me funciona de ninguna manera, lo más
extraño es que si se trata de multiplicacion, suma o resta no hay problemas,
el problema es con la división.
Aqui alguien encontró una solución para salir del problema ahora, es poner
otro IIF a la hora de dividir:

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

Es la unica forma que hemos encontrado para salir del problema temporalmente
pero luce mal

Si alguien tiene la solución se lo agradeceria mucho

Saludos
Mirko


"Luis Miguel Blanco" escribió
en el mensaje news:
> 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
>>
>>
>>





Respuesta Responder a este mensaje
#4 Mirko
02/03/2006 - 23:24 | Informe spam
mil gracias luismi, si lo resuelvo mas adelante te aviso

Saludos,
Mirko
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida