Fórum Filtro com DateTimePicker (Solução) #197937
29/11/2003
0
Resolvi abrir um novo tópico para esclarecer alguns pequenos detalhes.
1 - Para que o código que segue funcione de maneira apropriada, a propriedade FILTERED do componente TABLE deve estar setada para FALSE.
2 - A propriedade [b:839e318c37]Filtered[/b:839e318c37] deve vir após a [b:839e318c37]Filter[/b:839e318c37] no código, pois, atribuir valor a propriedade Filter em RunTime desativa a propriedade Filtered (se esta estiver antes de Filter).
ex.:[b:839e318c37]
Filter:=´[CAMPODATA]=´ + DatetoStr(DateTimePicker.Date);
Filtered := true;[/b:839e318c37]
3 - Para utilizar o evento OnFilterRecord da Tabela você deve utilizar este código ou algo parecido:
4 - Segue o código para FILTRAR registros ao clicar em um DateTimePicker...
[b:839e318c37]
Estes códigos não funcionam desta maneira com QUERY, e sim com TABLE.
[/b:839e318c37]
Obrigado a todos pela ajuda
[]s
Douglas.
1 - Para que o código que segue funcione de maneira apropriada, a propriedade FILTERED do componente TABLE deve estar setada para FALSE.
2 - A propriedade [b:839e318c37]Filtered[/b:839e318c37] deve vir após a [b:839e318c37]Filter[/b:839e318c37] no código, pois, atribuir valor a propriedade Filter em RunTime desativa a propriedade Filtered (se esta estiver antes de Filter).
ex.:[b:839e318c37]
Filter:=´[CAMPODATA]=´ + DatetoStr(DateTimePicker.Date);
Filtered := true;[/b:839e318c37]
3 - Para utilizar o evento OnFilterRecord da Tabela você deve utilizar este código ou algo parecido:
procedure DataModule.TABELAFilterRecord(DataSet: TDataSet; var Accept: Boolean);
var
Dia, Mes, Ano: word;
begin
Accept := false;
DecodeDate(Date,Ano,Mes,Dia);
if DataModule.TABELA[´CAMPODATA´] = DATE then //campodata = data do sistema
Accept := True;
end;
4 - Segue o código para FILTRAR registros ao clicar em um DateTimePicker...
(*
código que executa o FILTRO no evento OnShow do Form.
Neste caso, filtra pela data atual. Para filtrar por outras datas
implementar de acordo com a necessidade.
*)
procedure Formulario.FormShow(Sender: TObject);
var
...
begin
DateTimePiker.Date := Date; //DTP recebe data do sistema(data atual)
with TABELA do
begin
Filter:=´[CAMPODATA]=´ + DatetoStr(DateTimePicker.Date);
Filtered := true;
end;
(*
Código associado ao evento OnChange do DateTimePicker.
Quando selecionar a data o filtro é executado e o resultado aparece no dbgrid associado a tabela. Escolhi um dbgrid por atender as minhas necessidades, mas pode ser qualquer outro componente de saída.
*)
procedure Formulario.DateTimePickerChange(Sender: TObject);
begin
with TABELA do
begin
Filter:=´[CAMPODATA]=´ + DatetoStr(DateTimePicker.Date);
Filtered := true;
end;
[b:839e318c37]
Estes códigos não funcionam desta maneira com QUERY, e sim com TABLE.
[/b:839e318c37]
Obrigado a todos pela ajuda
[]s
Douglas.
Douglas Bitencourt
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)