Filtro em DateTimePicker
Tenho um filtro de tabela com 2 componentes DateTimePicker e estava fazendo a filtragem normalmente quando consultava data do mês de agosto, só que quando fui consultar datas do mês de setembro não filtra, o dbgrid fica em branco quem poderá me ajudar; o código que estou usando é este:
CCliente.Table1.Filter:=´DATA >= ´´´ + DateToStr(DateTimePicker1.Date) + ´´´ and DATA <= ´´´ + DateToStr(DateTimePicker2.Date) + ´´´´;
CCliente.Table1.Filtered:=True;
CCliente.Table1.Open;
CCliente.Table1.Filter:=´DATA >= ´´´ + DateToStr(DateTimePicker1.Date) + ´´´ and DATA <= ´´´ + DateToStr(DateTimePicker2.Date) + ´´´´;
CCliente.Table1.Filtered:=True;
CCliente.Table1.Open;
Xadriano
Curtidas 0
Respostas
Mmtoor
08/09/2003
Prezado.
Verifique primeiro sem tem registros na margem de data selecionada. No mais, utilize query.
Var
Inicio: String;
Final: String;
begin
If Datetimepicker2.Date < Datetimepicker1.Date Then
begin
ShowMessage(´Intervalo de datas inválido, a data inicial é maior que a data final!´);
Datetimepicker2.Date := Datetimepicker1.Date;
end
Else
begin
Inicio := DateToStr(Datetimepicker1.Date);
Final := DateToStr(Datetimepicker2.Date);
datamodule1.query1.Close;
datamodule1.query1.SQL.Clear;
datamodule1.query1.SQL.Text := ´SELECT * FROM boleto WHERE dtpagto >=:pInicial and dtpagto<=:pFinal ORDER BY dtpagto ASC´;
datamodule1.query1.ParamByName(´pInicial´).AsDateTime := StrToDate(Inicio);
datamodule1.query1.ParamByName(´pFinal´).AsDateTime := StrToDate(Final);
datamodule1.query1.Prepare;
datamodule1.query1.Open;
dbgrid1.SetFocus;
end;
Espero ter ajudado.
MMTOOR2003
Verifique primeiro sem tem registros na margem de data selecionada. No mais, utilize query.
Var
Inicio: String;
Final: String;
begin
If Datetimepicker2.Date < Datetimepicker1.Date Then
begin
ShowMessage(´Intervalo de datas inválido, a data inicial é maior que a data final!´);
Datetimepicker2.Date := Datetimepicker1.Date;
end
Else
begin
Inicio := DateToStr(Datetimepicker1.Date);
Final := DateToStr(Datetimepicker2.Date);
datamodule1.query1.Close;
datamodule1.query1.SQL.Clear;
datamodule1.query1.SQL.Text := ´SELECT * FROM boleto WHERE dtpagto >=:pInicial and dtpagto<=:pFinal ORDER BY dtpagto ASC´;
datamodule1.query1.ParamByName(´pInicial´).AsDateTime := StrToDate(Inicio);
datamodule1.query1.ParamByName(´pFinal´).AsDateTime := StrToDate(Final);
datamodule1.query1.Prepare;
datamodule1.query1.Open;
dbgrid1.SetFocus;
end;
Espero ter ajudado.
MMTOOR2003
GOSTEI 0