Oracle - División por Cero en campo FORMULA

 
Vista:

División por Cero en campo FORMULA

Publicado por Javi (12 intervenciones) el 26/06/2007 10:49:08
Tengo un campo en un bloque donde quiero representar un dato a partir de modo que he puesto la propiedad MODO DE CÁLCULO = Formula y en la propiedad FORMULA he puesto la siguiente "round(:totlin * 100 / :v_totlin,2)", el caso es que al poner la fórmula puede que v_totlin sea cero, ¿Cómo puedo hacer para controlar ese caso y que no me salte el error de división por cero?

El problema es que no puedo usar SELECT ni DECODE ni otro tipo de sentencias que me ayudarian a devolver 0 cuando se dé la división por cero, pero Oracle no me lo permite.

MUCHAS GRACIAS.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:División por Cero en campo FORMULA

Publicado por mad (88 intervenciones) el 26/06/2007 11:20:26
¿Has probado en el trriger ON-ERROR del bloque?

DECLARE
NUM_ERROR NUMBER := ERROR_CODE;
BEGIN

IF NUM_ERROR = 'NUMERO DE ERROR QUE TE DE' THEN
NULL;
END IF;
END;

Pruebalo, no estoy seguro.

Salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:División por Cero en campo FORMULA

Publicado por Javi (12 intervenciones) el 26/06/2007 12:06:51
No, eso sólo haría que el error no llegase a saltar en pantalla, pero lo que yo quiero es que cuando el valor del campo sea 0 que me devuelva 0 como resultado, no que me genere un error.

GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:División por Cero en campo FORMULA

Publicado por diego (39 intervenciones) el 26/06/2007 13:24:21
Creo que esto te puede servir:
decode(:totlin,0,0,round(:totlin * 100 / :v_totlin,2))
Con esto le dices que si :totlin es 0 te devuelva 0 y sino que te devuelva el valor de la formula
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:División por Cero en campo FORMULA

Publicado por Javi (12 intervenciones) el 26/06/2007 16:00:59
Es lo que habia pensado hacer, pero el editor de la Fórmula no me permite usar el comando DECODE, de ahi el problema. Os sitúo, en el FORMS cuando defines la propiedad MODO DE CÁLCULO de un item y le metes la fórmula en la ventana que te aparece para introducirla no se traga el DECODE.

En fin, a ver si se os ocurre otra cosa porque yo estoy perdido, GRACIAS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:División por Cero en campo FORMULA

Publicado por mad (88 intervenciones) el 26/06/2007 20:09:50
No quiero ser pesado :-), pero ¿si en el trrigger de ON-ERROR en lugar de poner NULL pones :item := 0; ?

DECLARE
NUM_ERROR NUMBER := ERROR_CODE;
BEGIN

IF NUM_ERROR = 'NUMERO DE ERROR QUE TE DE' THEN
:BLOQUE.ITEM := 0;
END IF;
END;

De esta forma controlas solo el error de division por cero y le asignas el valor 0 al item, si el error es otro te saltaria.

Si hay algun otro campo susceptible de que te retorne este mismo error, tambien puedes mandar en un parametro el nombre del item que da el error para asignarle a ese el valor de 0.

Espero que no te esté liando mas.

Salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:División por Cero en campo FORMULA

Publicado por Jose (1 intervención) el 20/05/2014 20:30:14
Excelente, una hora buscando la solución y aqui está. Gracias Diego.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar