Filtrar por datas

Delphi

22/05/2004

Preciso gerar uma consulta que me dê os registros entre duas dadas.

Estou fazendo assim:
TabCaixaDiario.SQL.Add(´SELECT * FROM Tab_CaixaDiario WHERE Data >= ´ + MaskDataInicial.Text + ´ AND Data <= ´ + MaskDataFinal.Text);

Mas está vindo a tabela vazia. O que pode estar errado?

Uso Access com ADO.

Desde já agradeço.


André Maretti

André Maretti

Curtidas 0

Respostas

Fabio.hc

Fabio.hc

22/05/2004

Tente assim:

TabCaixaDiario.SQL.Add(´SELECT * FROM Tab_CaixaDiario WHERE Data between :datainicial AND :datafinal´);
TabCaixaDiario.ParamByName(´datainicial´).AsDate:=StrToDate(MaskDataInicial.Text);
TabCaixaDiario.ParamByName(´datafinal´).AsDate:=StrToDate(MaskDataFinal.Text);



GOSTEI 0
Anjocurioso

Anjocurioso

22/05/2004

Resposta rapida, o Sql entendende data pra consulta como string, portanto, voce precisa colocar as datas entre aspas, portanto o correto seria voce colocar antes e depois da data + ´´´´ + data + ´´´´ + entendeu?


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

22/05/2004

Colega,

Outra forma:

TabCaixaDiario.SQL.Add(´SELECT * FROM Tab_CaixaDiario WHERE Data >= ´ + QuotedStr(MaskDataInicial.Text) + ´ AND Data <= ´ + QuotedStr(MaskDataFinal.Text)); 


Lembrando ainda que, sem o uso de parâmetros é necessário passar a data no formato mm/dd/yyyy. O exemplo do Fábio.HC é melhor, principalmente, se você utilizar componentes DateTimePicker ao invés de MaskEdit.


GOSTEI 0
Marcelo.c

Marcelo.c

22/05/2004

Ou ainda:

TabCaixaDiario.SQL.Add(´SELECT * FROM Tab_CaixaDiario WHERE Data BETWEEN ´ + QuotedStr(MaskDataInicial.Text) + ´ AND ´ + QuotedStr(MaskDataFinal.Text));


Ressaltando que:
[quote:2023632f8b=´Aroldo Zanela´] ...sem o uso de parâmetros é necessário passar a data no formato mm/dd/yyyy.[/quote:2023632f8b]


GOSTEI 0
POSTAR