Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   firebird y fechas (https://www.clubdelphi.com/foros/showthread.php?t=47659)

jmlifi 04-09-2007 12:09:13

firebird y fechas
 
Os cuento,

trabajo bajo Firebird 2.0.1

La Consulta:

SELECT ref_n,tipom,ref_c,tratmto,sum(qp-realzdas) cant,
peso,piezas.notas, sum(qp-realzdas)*peso pesototal,nom,pedidos.f_ent
FROM pzpedido,Pedidos,piezas,clientes
WHERE piezas.ref_n=pzpedido.ref_n and pzpedido.pedido=Pedidos.pedido
and pedidos.f_ent>='08/06/2007'
and pedidos.f_ent<='09/03/2007'
and pedidos.codcliente=clientes.codigo
and (conjunto="" or conjunto is null or conjunto="C")
and Clientes.Codigo ='0421'
GROUP BY ref_n,tipom,ref_c,tratmto,peso,piezas.notas,nom,pedidos.f_ent
HAVING sum(qp-realzdas)>0
ORDER BY ref_n ASC

Si realizo la consulta en SQL EXPLORER solo me muestra los registros anteriores al 3 de septiembre.
Si utilizo=> pedidos.f_ent<'09/04/2007'
me muestra correctamente.

Si utilizo el componente TSQLQUERY y muestro los datos en un Quickreport la consulta es correcta.

¿a que es debido?

defcon1_es 04-09-2007 13:27:25

Hola, esto puede ser debido a que en pedidos.f_ent tambien se guarda la hora.
Puedes usar la funcion f_StripTime de la libreria FreeUDFLib,
que puedes descargar desde http://www.ibphoenix.com/downloads/f...ib20010211.zip
aunque hay muchas mas librerias UDF, mira aqui: http://www.ibphoenix.com/main.nfs?a=...e=ibp_udf_libs

Prueba esto:
Código SQL [-]
SELECT ref_n,tipom,ref_c,tratmto,sum(qp-realzdas) cant,
peso,piezas.notas, sum(qp-realzdas)*peso pesototal,nom,pedidos.f_ent
FROM pzpedido,Pedidos,piezas,clientes
WHERE piezas.ref_n=pzpedido.ref_n and pzpedido.pedido=Pedidos.pedido
and f_StripTime(pedidos.f_ent)>='08/06/2007'
and f_StripTime(pedidos.f_ent)<='09/03/2007'
and pedidos.codcliente=clientes.codigo
and (conjunto="" or conjunto is null or conjunto="C")
and Clientes.Codigo ='0421'
GROUP BY ref_n,tipom,ref_c,tratmto,peso,piezas.notas,nom,pedidos.f_ent
HAVING sum(qp-realzdas)>0
ORDER BY ref_n ASC

eduarcol 04-09-2007 14:26:22

me acabo de dar cuenta que el hilo esta repetido y yo respondi el otro, pero la respuesta apunta al mismo problema

jmlifi 04-09-2007 14:52:50

Perdona por mi ignorancia... Me he descargado el .zip. Qué es lo que debo de ejecutar?

defcon1_es 05-09-2007 09:54:59

Cita:

Empezado por jmlifi (Mensaje 228171)
Perdona por mi ignorancia... Me he descargado el .zip. Qué es lo que debo de ejecutar?

No debes ejecutar nada.
Tienes que copiar el fichero FreeUDFLib.dll a la carpeta UDF de FireBird, y registrar en la base de datos las funciones externas que contiene esa dll, por ejemplo asi:

Código SQL [-]
DECLARE EXTERNAL FUNCTION F_STRIPTIME TIMESTAMP
RETURNS TIMESTAMP
ENTRY_POINT 'StripTime' MODULE_NAME 'FreeUDFLib';

Y despues simplemente puedes usar esas funciones en tus sentencias SQL.

Para aprender más sobre UDF’s, consulta la InterBase 6.0 Developer’s Guide en http://ibphoenix.com/downloads/60DevGuide.zip
y diversos enlaces en http://www.ibphoenix.com/main.nfs?a=...earch_examples


La franja horaria es GMT +2. Ahora son las 11:50: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