Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema al filtrar fechas con parametros (https://www.clubdelphi.com/foros/showthread.php?t=44320)

MaMu 04-06-2007 02:22:55

Problema al filtrar fechas con parametros
 
Hola, yo necesito filtrar datos de una tabla, por rango de fechas, pero que a su vez cumpla otra condicion. Lo que hago es lo siguiente:

Código Delphi [-]
QCaja.Close;
      QCaja.SQL.Clear;
      QCaja.SQL.Add('select * from caja where movimiento="EGRESO" in(select importe from caja where fecha between :inicio and :fin)');
      QCaja.Parameters.ParamByName('inicio').Value :=(DateTimePicker2.Date);
      QCaja.Parameters.ParamByName('fin').Value:=(DateTimePicker3.Date);
      QCaja.ExecSQL;
      QCaja.Open;

Como se ve, meti dentro de la consulta otra subconsulta, pero el tema es que no me muestra ningun valor, y hay valores que cumplirian con la condicion. Que es lo que hago mal? Yo necesito filtrar registros comprendidos entre 2 fechas, y que el campo movimiento="EGRESO". Como lo puedo hacer?

Saludos

MaMu 04-06-2007 03:30:08

El problema, lo tengo basicamente en esta sintaxis que probe

Código Delphi [-]
 QCaja.Close;
        QCaja.SQL.Clear;
        QCaja.SQL.Add('select * from caja where fecha=:inicio and movimiento="EGRESO"');
        QCaja.Parameters.ParamByName('inicio').Value :=DateTimePicker2.DateTime;
        ShortDateFormat := 'dd/mm/yyyy';
        QCaja.ExecSQL;
        QCaja.Open;

No me muestra nada de nada, a pesar de tener registros que cumplen dicha condicion. Todos los post que lei sobre problemas con fechas, ninguno me funciono.

MaMu 04-06-2007 03:31:53

Es hasta ridiculo, para que me funcione con una determinada fecha, tengo que poner el parametro en un dia anterior y me toma la fecha que quiero. Porque?

BuenaOnda 04-06-2007 03:42:14

hola... prueba adicionando la hora ,

por ejemplo

Código Delphi [-]
  Fecha >='03/06/2007 00:00:00' AND Fecha <='03/06/2007 23:59:59'

tambien puedes utilizar Between.

otra consulta ... movimiento="EGRESO", esta registrado en la bases de datos de esa manera, "EGRESO", tambien puedes probar con un Upper... por ej.. Upper(movimiento)='EGRESO'

marcoszorrilla 04-06-2007 07:54:09

Código Delphi [-]
 QCaja.Close;
        QCaja.SQL.Clear;
        QCaja.SQL.Add('select * from caja where fecha=:inicio and movimiento="EGRESO"');
        QCaja.Parameters.ParamByName('inicio').Value :=DateTimePicker2.Date;
        ShortDateFormat := 'dd/mm/yyyy';
        QCaja.ExecSQL;
        QCaja.Open;


Un Saludo.


La franja horaria es GMT +2. Ahora son las 06:25:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi