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