Fórum Filtro entre datas #131498
01/04/2010
Alguém poderia me ajudar com este código:
TClientDataSet(Ds.DataSet).Close;
TClientDataSet(Ds.DataSet).CommandText := ('SELECT * FROM cadcontrrecebmaterial WHERE DataRec>=:DTPinicio and DataRec<=:DTPfinal order BY DataRec');
TClientDataSet(Ds.DataSet).Params.ParamByName('DTPinicio').AsDate :=DTPinicio.Date;
TClientDataSet(Ds.DataSet).Params.ParamByName('DTPfinal').AsDate :=DTPfinal.Date;
TClientDataSet(Ds.DataSet).Open;
O caso é o seguinte, tenho diversos registros na tabela, porém ao filtrar as datas estou recebendo o grid vazio.
Exemplo:
Filtrar o período do dia 22/02/2010 a 22/02/2010 – o código não filtra nada.
Filtrar o período do dia 22/02/2010 a 23/02/2010 – o código filtra só o dia 22/02/2010.
Filtrar o período do dia 22/02/2010 a 24/02/2010 – o código filtra do dia 22 a 23/02/2010.
Puxa no primeiro filtro não deveria trazer o dia 22/02/2010 e no segundo o dia 22 e 23
Abraço
Valdecir
Posts
Tente colocar
TClientDataSet(Ds.DataSet).Params.ParamByName('DTPinicio').AsDate
:= DateOf( DTPinicio.Date );
TClientDataSet(Ds.DataSet).Params.ParamByName('DTPfinal').AsDate := DateOf( DTPfinal.Date );declare DateUtils no uses.
Espero ter colaborado.
01/04/2010
Marcos Iwazaki
veja se o DataRec não é DateTime... se for faça um trunc
01/04/2010
Valdecir Peres
É um campo DataTime, mas como faço o trunc
abs.
01/04/2010
Emerson Nascimento
você pode também setar a propriedade Time do objeto DTPInicio pra 00:00:00 e do objeto DTPFinal para 23:59:59
e passar o parâmetro como .AsSQLTimeStamp, usando DTPInicio.DateTime e DTPFinal.DateTime.
mas creio que a melhor opção seja mesmo truncar o campo, assim você se preocupa somente em passar a data, sem necessidade de atentar-se à hora.
IMPORTANTE: qual o banco de dados em uso?
A função DateOf faz exatamente o Trunc.
05/04/2010
Carlos Bernardo
'SELECT * FROM cadcontrrecebmaterial WHERE DataRec>=:DTPinicio and DataRec<=:DTPfinal order BY DataRec');
Tenta o between
'SELECT * FROM cadcontrrecebmaterial WHERE DataRec BETWEEN :DTPinicio and :DTPfinal order BY DataRec'
05/04/2010
Valdecir Peres
Pessoal valeu a atenção.
Optei por dar entrada só com a data, fica mais fácil.
abs