Fórum Como Filtrar dados usando o DBLoockup #386310
14/09/2010
0
1- TAB_CAD_CLI (Destinada para dados cadastrais do cliente como COD_CLI, NOME, CPF....)
2- TAB_UF (Destinada para cadastrar Estados)
3- TAB_CIDADE (Destinada para cadastrar Cidades)
4- TAB_BAIRRO (Destinada para cadastrar Bairros)
Como que eu faço para relacionar as tabelas (TAB_UF, TAB_CIDADE, TAB_BAIRRO) com a TAB_CAD_CLI?
A minha intenção é que quando eu estiver fazendo de algum cadastro de cliente, já apareça por exemplo todos estados cadastrados na TAB_UF para que eu possa escolher. E ainda mais, quando eu escolher um estado, na parte de CIDADE já apareça as cidades cadastradas na TAB_CIDADE pertencentes ao estado escolhido. O mesmo aconteceria com o bairro.
Ex.: Estou cadastrando um cliente, na parte referente aos dados de endereço, (no caso irei usar um Dropdown para aparecer as opções de UF, CIDADE, BAIRRO) seleciono o estado MG. Depois aparece todas as cidades cadastradas em MG. Escolho alguma cidade, por exemplo Belo Horizonte. Depois aparece todos os bairros cadastrados na cidade Divinópolis e escolho um.
Alguém tem uma idéia de como posso estar fazendo esse filtro?
Essa é a tela de cadastro.
Obrigado!!
Pedro Henrique
Curtir tópico
+ 0Posts
14/09/2010
Leonardo Xavier
Gostei + 0
14/09/2010
Pedro Henrique
Como você comentou, meu banco possui as 3 tabelas. Uma tabela para Estado, Cidade, e Bairro.
Gostei + 0
14/09/2010
Pietro Braga
dsxx = DataSource que vc usa no lookupcombobox xx.
lucbb = DbLookupComboBox
Tente isso depois que você selecionou o estado.
dscidades.filtered:= false;
dscidades.filter:= 'FK_Cod_Estado = ' + lucbbEstado.KeyField.Value.asString;
dsCidades.Filtered:= True;
Gostei + 0
14/09/2010
Leonardo Xavier
Como você comentou, meu banco possui as 3 tabelas. Uma tabela para Estado, Cidade, e Bairro.
Cara eu faria assim, construiria uma consulta.
Ao terminar de selecionar o estado.
var
pais:string;
begin
pais:=inttostr(meulokupdopais.keyvalue);
minhatabela.close;
minhatabela.sql.clear;
minhatabela.sql.add('Select distintc sgl_estado,nom_estado,fk cod_pais from estado where cod_pais="'+pais+'"');
minhatabela.prepared;
minhatabela.open;
Faz um teste ai.
Gostei + 0
16/09/2010
Pedro Henrique
Gostei + 0
16/09/2010
Pietro Braga
Só mude o KeyField.Value.asString para KeyValue.asString ou str(KeyValue)
Gostei + 0
17/09/2010
Pedro Henrique
Estou tentando usar pelo modo que o Pietro me falou. Porem, quando eu insiro o código que você digitou no evento OnChange do Loockup estado (ja fazendo as alterações) me retorna o seguintes erros
Abaixo está o código que coloquei no evento OnChange
procedure Tfrmcad.DSUFDataChange(Sender: TObject; Field: TField);begin DSCidade.DataSet.Filtered:= False; DSCidade.DataSet.Filter := 'FK_COD_ESTADO = ' + DB_LCB_UF.KeyValue.asString; DSCidade.DataSet.Filtered:= True;end;
Tem algo errado no código? Tem alguma sugestão de como posso estar resolvendo esse problema?Obrigado pela compreensão.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)