Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-12-2005
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
Question 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
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #2  
Antiguo 26-12-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Antes de darte cualquier explicacion me podrias decir por usas el excute statement. En lo que planteas no veo la razon del uso.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #3  
Antiguo 26-12-2005
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
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
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #4  
Antiguo 29-12-2005
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
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?
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:58:43.


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
Copyright 1996-2007 Club Delphi