Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

maquinavirtual

filtrar dblookup com ibquery

Recommended Posts

Estou usando firebird e delphi 7 e preciso fazer um filtro em tres dblookups, um de estado outro de cidade e o ultimo de bairro.

Como faco atraves de uma query, estou utilizando os componentes ibquery, ibtransaction, ibdataset todos da paleta interbase do delphi 7.

Esses campos sao chave estrangeira no form, isto e, sao registros de outras tabelas (tabestado, tabcidade e tabbairro). Estou usando a seguinte logica:

 

tab_Cadastro(cod_cadastro, cod_estado, cod_cidade, cod_bairro, ...)

tab_Estado(cod_estado,nome,....)

tab_Cidade(cod_estado, cod_cidade, nome, ...)

tab_Bairro(cod_cidade, cod_bairro, nome, .....).

 

obs: os que estao sublinhados sao chaves_estrageira e os que estao em negrito sao chaves_primaria.

Aguardo ajuda.Obrigado.

 

Como fiz ate agora:

 

Adicionei no datamodule (DTM) uma ibQUERY, liguei ao banco de dados, na propriedade SQL da ibQUERY coloquei o seguinte codigo:

 

  
Código:
 
select *
from TABESTADO TABCIDADE
where CODIGOESTADO = CODIGOCIDADE
Order By NOMECIDADE

Dei um duplo clique na ibQUERY e adicionei todos os campos da tabela cidade,

que é a tabela que vai realizar o filtro.

 

Na propriedade ONCLOSEUP do dblookupestado coloquei o seguinte codigo:

 

   
Código:
 
procedure TFormCadastro.DBLKselecESTADOCloseUp(Sender: TObject);
begin
  DTM.IBQRYbuscaCidade.Close;
  DTM.IBQRYbuscaCidade.ParamByName('NOMECIDADE').Value:=DBLKselecCIDADE.Text;
  DTM.IBQRYbuscaCidade.Close;
end;

Quando compilo o programa, depois que seleciono o estado ele gera um erro dizendo algo assim:

 

    
Código:
 
ibQUERYbuscacidade: Parameter 'NOMECIDADE' not found.

Aguardo ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeira questão: seu select está um pouco estranho.... você compara o código do estado com o código da cidade porque? Dê uma revisada nisto.... segunda questão: você está querendo usar a mesma IBQuery para os 3 dblookups? A menos que me falhe a memória agora (já que não tenho delphi aqui pra ver), os DBLookUps são ligados a um campo de retorno de uma query como os DBEdits da vida não é? Sendo assim, salvo engano, na hora que carregar os dados dos dblookups a carga de um vai carregar os outros 2 e provavelmente vai dar erro... mas considerando que eu esteja errado nisto (visto que não sou fã de usar componentes db), o código do seu oncloseup você tem dois problemas: o primeiro é que está passando um valor de parâmetro que não existe na query que postou aqui (isto é, teria que ter no seu where um NOME = :NOMECIDADE para que o seu IBQuery interpretasse que existe um parâmetro na query) e o segundo é que você está dando dois closes na IBQuery, onde acredito que o segundo close deveria ser um open não é?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo,

Vamos por partes, primeiro essa query e para selecionar as cidade do estado selecionado anteriormente, depois dessa pretendo fazer outra query para selecionar os bairros. Nesse caso quando selecionar o estado no primeiro lookup quero que o segundo lookup mostre as cidades, depois que escolher acidade quero que o terceiro lookup mostre os bairros da cidade selecionada. Realmente quanto ao close voce tem razao, vou verificar. Mas mesmo assim aguardo ajuda. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.