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 10-12-2003
raul_sal raul_sal is offline
No confirmado
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 45
Poder: 0
raul_sal Va por buen camino
Fecha como parametro en Consulta

Que tal amigos del foro, les planteo mi problema

Utilizo delphi 6.0, IBX, Firebird 1.5 RC7

Mi problema es que creo una consulta en donde coloco una resta de fechas, una de las fechas es un parametro asi:

Código:
SELECT ABS(SUM(VALOR_CAPITAL+IVA_CAPITAL+VALOR_INTERES+IVA_INTERES-VALOR_PAGADO))
 FROM CXC_ENC_CARGO B INNER JOIN CXC_DET_CARGO C ON (B.TRANSACCION = C.TRANSACCION) AND (B.DOCUMENTO = C.DOCUMENTO) AND (B.CLIENTE = C.CLIENTE)
 WHERE (B.CLIENTE = A.CODIGO) AND (B.STATUS = 'A')
   AND (VALOR_CAPITAL-VALOR_PAGADO > 0)
   AND ((:FECHA_AL - C.FECHA) >= 1)
es en el parametro :FECHA_AL en donde al lanzar la consulta me dice que la evaluacion de esa expresion no es soportada, ya probe de varias formas pero nada, si sustituyo el parametro con una fecha escrita entre comillas todo va bien, que podria estar pasando.

PD. este mensaje me lo da en Delphi y desde el IBExpert que es la herramienta que utilizo para entrarle a la BD

De antemano gracias.
Responder Con Cita
  #2  
Antiguo 10-12-2003
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Verifica si el parametro que estas pasando esta en formato gringo
mm/dd/yyyy que asi lo usa interbase por que si lo pasas como dd/mm/yyyy en este caso el dia el lo entendera como mes y el mes como dia y si se pasa de 12 hay error verifica eso a ver que es lo unico que veo que te puede estar molestando.

ok
Responder Con Cita
  #3  
Antiguo 10-12-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Pruébalo así :

Código:
SELECT ABS(SUM(VALOR_CAPITAL+IVA_CAPITAL+VALOR_INTERES+IVA_INTERES-VALOR_PAGADO))
 FROM CXC_ENC_CARGO B INNER JOIN CXC_DET_CARGO C ON (B.TRANSACCION = C.TRANSACCION) AND (B.DOCUMENTO = C.DOCUMENTO) AND (B.CLIENTE = C.CLIENTE)
 WHERE (B.CLIENTE = A.CODIGO) AND (B.STATUS = 'A')
   AND (VALOR_CAPITAL-VALOR_PAGADO > 0)
   AND ((C.FECHA - :FECHA_AL) < 1)
Firebird a veces tiene problemas para detectar el tipo de los parámetros.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 10-12-2003
raul_sal raul_sal is offline
No confirmado
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 45
Poder: 0
raul_sal Va por buen camino
Gracias Guillotmarc probe tu solucion y efectivamente, ya me deja correr el query pero cuando le ingreso un valor a ese parametro lo haga con el formato que lo haga mm/dd/yyyy dd/mm/yyyy me da un error al convertir la cadena, que mas puedo probar o sera que es algun bug que tiene el Firebird 1.5


Gracias
Responder Con Cita
  #5  
Antiguo 10-12-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

El motor espera que le pases una Fecha/hora, que es el tipo de datos detectado para ese parámetro, no una cadena.

Por lo que en el Param del Query, especifica el parámetro como fecha-hora (en dbExpress es ftTimeStamp, en IBX no lo sé), y al pasarle valor, pásale directamente un TDateTime. Si tienes el valor en un string, entonces puedes hacer una conversión StrToDateTime(Fecha).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 10-12-2003 a las 21:40:22.
Responder Con Cita
  #6  
Antiguo 13-09-2004
aurafern aurafern is offline
Miembro
 
Registrado: dic 2003
Posts: 34
Poder: 0
aurafern Va por buen camino
Unhappy

Yo tengo el mismo problema!!.

Escribo la siguiente consulta:

Código SQL [-]
SELECT SUM(e.DEBITO-e.CREDITO) AS SALDO, e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, e.numero_cruce, E.CUOTA_CRUCE,
d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO FROM CUENTAS_POR_TERCERO e , cuentas_por_tercero d
where e.ID_EMPRESA_CRUCE=d.ID_EMPRESA and e.ID_SUCURSAL_CRUCE=d.ID_SUCURSAL
and e.ID_TIPO_DOC_CRUCE= d.id_tipo_doc and e.numero_cruce=d.numero  AND e.ID_EMPRESA=:EMPRESA AND E.ID_SUCURSAL=:SUCURSAL AND
E.ID_TERCERO=:ID_TERCERO and e.cuota_cruce=d.cuota
AND (D.VENCIMIENTO - :PFECHA)<ESDE AND ( D.VENCIMIENTO - :PFECHA)>:HASTA
GROUP BY e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE,
e.numero_cruce, E.CUOTA_CRUCE , d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO
having SUM(e.DEBITO-e.CREDITO)<>0


y en el IBConsole, arroja el siguiente error:

Data type unknown, ni siquiera me pide los parámetros

si remplazo este fragmento de intruccion
Código SQL [-]
(D.VENCIMIENTO - :PFECHA)<ESDE AND ( D.VENCIMIENTO - :PFECHA)>:HASTA
por
Código SQL [-]
(D.VENCIMIENTO - :PFECHA)<-100 AND ( D.VENCIMIENTO - :PFECHA)>100

Me pide los parametros:

empresa=1, sucursal=1, id_tercero=1, pfecha=09/09/2004

y arroja el siguiente error

"Could not convert variant of type (string) into type (boolean)"

Qué hago?.

Es que realmente estos inicios en FireBird, me han dado muy duro.

Muchas gracias por su colaboración!
Responder Con Cita
  #7  
Antiguo 13-09-2004
aurafern aurafern is offline
Miembro
 
Registrado: dic 2003
Posts: 34
Poder: 0
aurafern Va por buen camino
Unhappy

Y si le hago un cast tampoco funciona

Código SQL [-]
SELECT SUM(e.DEBITO-e.CREDITO) AS SALDO, e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, e.numero_cruce, E.CUOTA_CRUCE,
d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO FROM CUENTAS_POR_TERCERO e , cuentas_por_tercero d
where e.ID_EMPRESA_CRUCE=d.ID_EMPRESA and e.ID_SUCURSAL_CRUCE=d.ID_SUCURSAL
and e.ID_TIPO_DOC_CRUCE= d.id_tipo_doc and e.numero_cruce=d.numero  AND e.ID_EMPRESA=:EMPRESA AND E.ID_SUCURSAL=:SUCURSAL AND
E.ID_TERCERO=:ID_TERCERO and e.cuota_cruce=d.cuota
AND (D.VENCIMIENTO - cast(:PFECHA AS TIMESTAMP))<-99999 AND ( D.VENCIMIENTO - cast(:PFECHA AS TIMESTAMP))>999999
GROUP BY e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE,
e.numero_cruce, E.CUOTA_CRUCE , d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO
having SUM(e.DEBITO-e.CREDITO)<>0

error:

Data type unknown
Responder Con Cita
  #8  
Antiguo 13-09-2004
aurafern aurafern is offline
Miembro
 
Registrado: dic 2003
Posts: 34
Poder: 0
aurafern Va por buen camino
Talking Disculpen ya no lean mi mensaje

Cuando llamé al procedimiento que contiene esta consulta, desde delphi me funcionó.

Muchas gracias por su ayuda!!
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 02:22:55.


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