Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problema con execute statement (https://www.clubdelphi.com/foros/showthread.php?t=28560)

Ivanzinho 23-12-2005 09:49:17

Problema con execute statement
 
Hola foro trabajo con IBExpert V.2004.01.22 y firebird 1.5 y tengo un problemilla con la siguiente consulta
Código SQL [-]
         execute statement 'Select Cen_lp, Pte_lp, Pes_lp, Lof_lp, Npr_lp, Fre_lp, ' ||
                           'Web_lp, Res_lp from mb' || old.ape_la || 'linped ' ||
                           'where num_lp = ' || old.npe_la || 'and ano_lp = ' || old.ape_la ||
                           'and lin_lp = ' || old.lin_la
                           into :CEN, :PTE, :PES, :LOF, :NPR, :FRE, :WEB, :RES;

el valor que se me almacen en la variable CEN es incorrecto, esta variable es de tipo NUMERIC(15,2) al igual que el campo Cen_lp y en dos pruebas realizadas me devuelve el valor correcto / 100.

Como este campo normalmente no tiene decimales declare la variable CEN como INTEGER e hice la siguiente consulta obteniendo el resultado deseado
Código SQL [-]
         execute statement 'Select Cast(Cen_lp as integer), Pte_lp, Pes_lp, Lof_lp, Npr_lp, Fre_lp, ' ||
                           'Web_lp, Res_lp from mb' || old.ape_la || 'linped ' ||
                           'where num_lp = ' || old.npe_la || 'and ano_lp = ' || old.ape_la ||
                           'and lin_lp = ' || old.lin_la
                           into :CEN, :PTE, :PES, :LOF, :NPR, :FRE, :WEB, :RES;
También me daba un error similar otro campo del mismo tipo, el valor de este campo acabe sacandolo haciendo calculos en otra tabla donde podia realizar la consulta directamente sin necesidad de utilizar el Execute Statement.

Después de todo este rollo mi pregunta es si alguno de vosotros sabe a qué puede ser debido este problema.

Un Saludo y muchas gracias

rastafarey 26-12-2005 16:45:37

Resp
 
Antes de darte cualquier explicacion me podrias decir por usas el excute statement. En lo que planteas no veo la razon del uso.

Ivanzinho 26-12-2005 17:34:04

Cita:

Empezado por rastafarey
Antes de darte cualquier explicacion me podrias decir por usas el excute statement. En lo que planteas no veo la razon del uso.

Porque la tabla mbYYYYlinped no siempre es la misma, para cada año hay una distinta, es decir mb2004linped, mb2005linped ... y dependiendo del valor del campo old.ape_la de la tabla mblinalb tengo que acceder a una u otra.

Un saludo

Ivanzinho 29-12-2005 09:25:00

Tras varias pruebas he llegado a la conclusión que si tienes una variable Numeric(x,y) e intentas obtener su valor a través de una sql lanzada con execute statement el valor que se obtiene como resultado es :
Código:

variable = ValorReal/10^y
donde "y" es el número de decimales.

¿A alguién le sucedió esto o simplemente es un prblema mio?


La franja horaria es GMT +2. Ahora son las 09:45:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi