Olá galera, vamos a esta Quick Tip, que tem a função de mostrar como podemos filtrar os itens de um DBLookup. Objetivo deste artigo não é ensinar como fazer um Lookup mas sim como filtrar os dados a serem exibidos em um.

Qual seria o cenário ?
Vamos imaginar o seguinte temos uma tabela Autor que pertence a uma determinada Empresa, então teríamos as seguintes tabelas :

[ Autor ]


 

[ Empresa ]


 

Vamos agora imaginar que temos uma Artigo que possui Autor



Neste momento vamos entrar na tela de cadastro de Artigos, com o objetivo de filtrar os Autores de uma determinada Empresa, para evitar vermos todos os autores de todas as empresas.



 

Observe que coloquei 1 RadioGroup com 3 itens, simulando as empresas que desejamos filtrar (DevMedia, Linha de Codigo e JavaFree), ao clicarmos em um item das empresas vamos apenas seus autores, como fazer isso ?

Veja o código abaixo, onde filtramos o ClientDataSet no qual vinculamos o Campo Lookup, o segredo esta ai, quando filtramos o DataSet no qual esta sendo apontado o Lookup o mesmo exibe apenas os dados desejados, sendo assim somente os autores de uma determina empresa.

Listagem 01: Filtro dos autores por Empresa

procedure TFrmArtigo.RadioGroup1Click(Sender: TObject);
begin
  with DM.CDSAutor do
  begin
    Close;
    Filtered := False;
    Filter := 'IDEmpresa = ' + IntToStr(RadioGroup1.ItemIndex + 1);
    Filtered := True;
    Open;
  end;
end;


Obs : Note que eu usei o index + 1, pois as empresas tem o IDEmpresa sequencial 1,2,3, por isso fiz desta maneira, cuidado com esta pratica pois nem sempre você tem a sequencia correta e isso fará com que seu filtro não funcione, ok ?

Com isso você irá ver que quando clicar em um determinar item os dados do Lookup vão mudar.

Fico por aqui e até a próxima Quick Tip.

Um abraço
Wesley Y
www.lithic.com.br