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)
-   -   Fecha como parametro en Consulta (https://www.clubdelphi.com/foros/showthread.php?t=5907)

raul_sal 10-12-2003 16:54:54

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.

rastafarey 10-12-2003 17:15:00

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

guillotmarc 10-12-2003 17:50:16

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.

raul_sal 10-12-2003 20:20:04

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

guillotmarc 10-12-2003 21:38:21

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.

aurafern 13-09-2004 21:43:07

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)<:DESDE 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)<:DESDE 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! :confused:

aurafern 13-09-2004 22:26:42

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 :confused:

aurafern 13-09-2004 23:37:08

Disculpen ya no lean mi mensaje
 
Cuando llamé al procedimiento que contiene esta consulta, desde delphi me funcionó.

Muchas gracias por su ayuda!! :confused: :eek: :D


La franja horaria es GMT +2. Ahora son las 22:57:57.

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