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 13-06-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Error en Coalesce de un Parámetro tipo Int64

Hola a tod@s !

Tengo un campo en una tabla del tipo Decimal(12,0), es decir, puede almacenar valores del tipo Int64.

Por otro lado, tengo un TIBDataSet enlazado con dicha tabla mediante ese campo clave del tipo Int64.

Cómo puedo hacer para preguntar en el IBDataSet si el parámetro clave es null o no ?

He intentado poner :
Código SQL [-]
Select Campo1 from Tabla1
where :Clave is Null
pero en este caso el error que me dá es 'Data Type Unknown' ya que al parecer no comprende de que tipo es el campo Clave.

Lo que se me ocurrió entonces es enlazarlo de esta manera :
Código SQL [-]
Select Campo1 from Tabla1
where Coalesce(:Clave, 0) = 0
y funcionaba perfectamente hasta que en el campo Clave aparezca un valor Int64 de 12 posiciones (p.ej. 123456789012).

El error que me aparece ahora es (en tiempo de ejecución) : 'arithmetic exception, numeric overflow or string truncation'.

Tengo ya perfectamente comprobado que se deben a los valores grandes de 'Clave', ya que con cualquier otro valor funciona correctamente, hasta que introduzco un Int64 y entonces al parecer el Coalesce(:Clave, 0) me lanza el error indicado.

Gracias por vuestra ayuda.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #2  
Antiguo 13-06-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Si estás usando Firebird/Interbase, ¿por qué no usar el tipo de datos BIGINT para el campo Clave?


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #3  
Antiguo 13-06-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Será un problema del componente?.
No sé, la verdad, pero me apunto para seguir este tema.
Responder Con Cita
  #4  
Antiguo 13-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola gluglu.

Probá consultándolo de este modo:
Código SQL [-]
SELECT CAMPO1 FROM PRUEBA
WHERE CAST(:CLAVE AS BIGINT) IS NULL
Hice algunas pruebas con un TIBDataSet y no me arrojó error.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 13-06-2011 a las 19:18:05.
Responder Con Cita
  #5  
Antiguo 13-06-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Hola Ecfisa !

Justo estaba probando eso antes de que viera tu post !! ... y es cierto, de esa manera no da error !
__________________
Piensa siempre en positivo !
Responder Con Cita
  #6  
Antiguo 13-06-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Y bueno, me quedaré con la duda



Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #7  
Antiguo 13-06-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Hola maeyanes !

Estoy utilizando Firebird 2.1, y no es que haya definido Clave como BigInt, sino tal y como indiqué lo tengo en la BBDD como Decimal(12,0), por lo tanto acepta valores 'BigInt'.

El problema era pasarlo como parámetro en otro IBDataSet. Ahí no puedo definir al parámetro como que sea de ningún tipo en concreto, por lo que me lanzaba el error. Y es por ello que me surgió el problema que expuse en este hilo.

La única solución que hemos sacado es hacer el Cast a BigInt ....

... o habría otra alternativa ? Yo he probado ya todas las que se me ocurrieron y no tengo forma de resolverlo si no es como aquí se ha indicado.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #8  
Antiguo 13-06-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Por eso te pregunto, ¿hay algo que te impida cambiar el tipo de campo a BIGINT? De esta forma te evitarías tener que hacer castings al momento de realizar tus consultas.



Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Método tem parametro do tipo sysint Paulao Varios 2 16-09-2010 21:20:15
SQL CASE y COALESCE mjjj SQL 1 17-12-2008 16:37:52
tipo de dato para pasar parametro a un store procedure Bracus SQL 6 25-03-2008 13:38:13
Parametro a todos los objetos de un tipo amadis OOP 1 06-10-2007 17:46:47
Parametro Tipo BIGINT Stored Procedure hibero Firebird e Interbase 5 13-04-2004 19:49:31


La franja horaria es GMT +2. Ahora son las 23:03:46.


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