Fórum Filtro entre datas #131498

01/04/2010

0

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    
Valdecir Peres

Valdecir Peres

Responder

Posts

01/04/2010

Wilson Junior

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.
Responder

Gostei + 0

01/04/2010

Marcos Iwazaki

veja se o DataRec não é DateTime... se for faça um trunc 
Responder

Gostei + 0

01/04/2010

Valdecir Peres

É um campo DataTime, mas como faço o trunc   abs. 
Responder

Gostei + 0

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?
Responder

Gostei + 0

05/04/2010

Wilson Junior

A função DateOf faz exatamente o Trunc.
Responder

Gostei + 0

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'
Responder

Gostei + 0

05/04/2010

Valdecir Peres

Pessoal valeu a atenção. Optei por dar entrada só com a data, fica mais fácil.     abs        
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar