Ajuda em filtro com componente dbdatetimepicker

Delphi

25/07/2012

desde já agradeço muito quem puder me dar uma mão ..........

estou usando uma tabela paradox
e tentando fazer um filtro entre duas datas usando 2 dbtimepicker

a tabela esta no meu datamodule For_ligabancodados

quando copilo ele passa mas o filtro da o seguinte erro field data not found
aqui está o código:

For_ligabancodados.table3.Filtered := False;
For_ligabancodados.table3.Filter := Data de chegada >= + DatetoStr(dbdatetimepicker1.date) +
and Data de saida <= + DatetoStr(dbdatetimepicker2.date);
For_ligabancodados.table3.Filtered := True;


quem tiver alguma outra forma de fazer isso agradeço de montão ....
Marcondes

Marcondes

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

25/07/2012

O nome do campo parece estar errado, o nome da coluna não pode conter espaços. Verifique se é DATA, DATA_DA_ENTRADA, etc.

Boa sorte.
GOSTEI 0
Marcondes

Marcondes

25/07/2012

muito obrigado por ter me respondido
mas conseguir achar o erro

realmente era quando chamava o campo do field. Conseguir com espaço sim mas teria que colocar em [ ], mas quando colocava os cochetes dava um erro de aritimética num sei o que lá. por causa dos operadores >=, <=. Foi preciso converter as datas para string. Acho que tem forma de fazer mas fácil, mas não manjo muito de programação. Aqui está como conseguir fazer para dar certo, talvez ajude alguém.

procedure TPesquisaReserva.BitBtn4Click(Sender: TObject);
var
D1: string;
D2: string;

begin
D1 := datetostr(dbdatetimepicker1.Datetime);
d2 := datetostr(dbdatetimepicker2.Datetime);
For_ligabancodados.table3.Filtered := False;
For_ligabancodados.table3.Filter := [data de chegada] >= + QuotedStr(d1) + and [data de saida] <= + QuotedStr(d2);
For_ligabancodados.table3.Filtered := True;
end;

procedure TPesquisaReserva.FormCreate(Sender: TObject);
begin
dbdatetimepicker1.datetime :=date;
dbdatetimepicker2.datetime :=date;
end;

procedure TPesquisaReserva.BitBtn3Click(Sender: TObject);
begin
For_ligabancodados.table3.Filtered := False;
end;

end.

GOSTEI 0
William

William

25/07/2012

Colega nunca usei colchetes para filtro, só ser for alguma particularidade para Paradox, quanto ao código inevitávelmente vc tera que converter a data em string porque o método Filter só aceita string, então adaptei seu código.


tbl1.Filtered := False;
tbl1.Filter := DATA_VENDA >= + QuotedStr(DateToStr(dtp1.Date)) + and DATA_VENDA <= + QuotedStr(DateToStr(dtp2.Date));
tbl1.Filtered := true;
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

25/07/2012

Eu também nunca vi esse uso dos colchetes, mas como funcionou, estou encerrando o tópico.
GOSTEI 0
POSTAR