Fórum Erro na filtragem entre datas #301583
03/11/2005
0
no componete adoqurey eu deixo dessa forma
SELECT * FROM TABELA
WHERE DATA BETWEEN :DATAINI AND :DATAFIN
eu uso banco de dados access
e no button adiciono este evento
adoquery.close;
adoquery.Parameters[0].Value := datainicial.date;
adoquery.Parameters[1].Value := datafinal.date;
adoquery.open
so o que acontece quando eu faço uma comparação maiores de 2 anos ele me retornar datas que não estão nesse paramentro sempre filtra datas maiores que a data final.
ex: datainicial 17/11/2003 e data final 17/11/2005 o resultado seria no dbgrid;
05/12/2003
10/04/2004
20/12/2005----obs que esta data e maior que data final
E outra coisa e que se a datainicial for ingual ex: 03/11/2005 e tiver algum registro tambem com essa data ele não me amostra no dbgrid :!:
Geomicro
Curtir tópico
+ 0Posts
03/11/2005
Marlon Spiess
usando ´WHERE DATA BETWEEN :DATAINI AND :DATAFIN´ o filtro será sempre ´entre´ as datas informadas, pra corrigir isso vc pode usar ´WHERE DATA >= :DATAINI AND DATA <= :DATAFIN´.
Qto ao fato de estar saíndo alem do limite, verifique no objeto query o tipo de data informado para os parametros, tente trocar ´adoquery.Parameters[0].Value =´ por ´adoquery.Parameters[0].AsDate =´
Espero ter ajudado
Gostei + 0
03/11/2005
Geomicro
So que ele não me da esta opção de coloca ´ASDATE´ o campo da tabela e tipo ´Data´ e do parameters tambem e do tipo ´DATETIME´ e tambem ele não medar a opção de coloca so ´DATE´.
o que eu poderia fazer para resolver vc teria alguma ideia
Gostei + 0
03/11/2005
Geomicro
se a data final for 03/11/2005 e no banco de dados tiver a mesma data ele não informa, so se eu colocar + 8 dias na frete na data final ex 11/11/2005 ai ele informa o dados da data 03/11/2005
o que poderia ser este erro
Gostei + 0
03/11/2005
Okama
Uma dica para resolver esse problema é formatar a data antes de enviá-la ao SQL e fornecer como String:
Ex.
var DataINI, DataFIM : String;
begin
DataINI := FormatDateTime( ´mm/dd/yyyy´, DataTimePicker1.date);
DataFIM := FormatDateTime( ´mm/dd/yyyy´, DataTimePicker2.date);
AdoQuery1.SQL.Text := ´Select * from Tabela where Data between ´ +
QuotedSTr( DataINI ) + ´ and ´+ QuotedStr( DataFIM );
AdoQuery1.Open;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)