Olá galera, nesta Quick Tips irei mostrar como usar dois recursos que temos no ClientDataSet para localizar e Filtrar registros no mesmo:
Vamos a construção do Exemplo:
Adicione:
- 1 ClientDataset, CDSPadrao ( Construí um XML, porém nada lhe impede de usar uma base própria )
- 1 DataSource, DSPadrao
- 1 DBGrid
- 1 DBNavigator
- 1 Edit EdtConteudo
- 1 BitBtn, BtnLocalizar
- 1 CheckBox, CbxFiltrar
procedure TFrmPrincipal.BtnLocalizarClick(Sender: TObject);
begin
if CDSPadrao.Locate('Nome',EdtConteudo.Text,[loCaseInsensitive,loPartialKey]) then
begin
ShowMessage('Registro encontrado ' + #13 +
'Codigo : ' + CDSPadraoID.AsString + #13 +
'Nome : ' + CDSPadraoNome.AsString);
end
else
begin
ShowMessage('Registro não encontrado!!!!');
EdtConteudo.Clear;
EdtConteudo.SetFocus;
end;
end;
CbxFiltrar : onClick
procedure TFrmPrincipal.CbxFiltrarClick(Sender: TObject);
begin
if TCheckBox(Sender).Checked then
//Usando Cast onde sei que o Objeto Sender é um TCheckBox,
//para verificar se o mesmo esta marcado
begin
with CDSPadrao do
begin
Close;
Filtered := False;
Filter := 'UPPER(Nome) Like ' +UpperCase(QuotedStr('%' + EdtConteudo.Text + '%'));
//Funciona como uma Clausula Where do SQL
Filtered := True;
Open;
end;
end
else
begin
CDSPadrao.Filtered := False;
EdtConteudo.Clear;
EdtConteudo.SetFocus;
end;
end;
O ClientDataSet, é um dos componentes mais poderosos que temos no Delphi, com eles trabalhamos em memória e usando o Filter e Locate, recuperarmos dados muitos mais rápidos do que se fizéssemos uma Query para representar estas funções que encontramos nele, pois como falei os dados estão na memória.
Fico por aqui e até a próxima Quick Tips.