Combobox estado carrega cidades

Delphi

14/10/2006

Olá pessoal, minha duvida eh a seguinte

Minhas tabelas

[b:4947e77faa]tb_estado[/b:4947e77faa]

[color=blue:4947e77faa]sigla_estado[/color:4947e77faa]
nome_estado

[b:4947e77faa]tb_cidades[/b:4947e77faa]

[color=red:4947e77faa]cod_cidade[/color:4947e77faa]
[color=blue:4947e77faa]sigla_estado[/color:4947e77faa]
nome_cidade

[b:4947e77faa]tb_cleientes[/b:4947e77faa]

cod_cliente
[color=red:4947e77faa]cod_cidade[/color:4947e77faa]
nome_cliente
...

Poderia colocar cidade e estado na mesma tabela mas prefiro modelar dessa forma porém estou com uma duvida.


NO FORMULARIO DE CLIENTE QUERO UM COMBOBOX ESTADO Q CARREGA AS CIDADES APOS O EVENTO ONEXIT DO COMBO ESTADO.

SE EU TENHO NA TABELA CLIENTE A CHAVE COD_CIDADE PARA, O CAMPO CIDADE COMO DEVO FAZER PRA LIGAR O ESTADO???

OBS.: O PROBLEMA EH Q QUANDO PERCORRO OS REGISTROS GRAVADOS COM O DBNAVIGATOR ELE ALTERA AS CIDADES MAS COMO OS ESTADOS NAO ESTAO LIGADOS NA TABELA CLIENTE ELE SEMPRE FICA NO Q ESTA SELECIONADO.

Acho q eh isso, vcs entenderam???

Obrigado!!!


Souzaaguiar

Souzaaguiar

Curtidas 0

Respostas

Paullsoftware

Paullsoftware

14/10/2006

O principal problema é que não existe um relacionamento entre as tabelas, então, sempre que vc for percorrer os registros isso vai ocorrer...

deveria ter mais ou nome essas estrutura:

tbEstados Cod_Estado - Chave Primaria PK Sigla Nome


tbCidades Cod_Cidade - Chave Primaria PK Cod_Estado - Chave Estrangeira FK Nome


tbClientes Cod_Cliente - Chave Primaria PK Cod_Cidade - Chave Estrangeira FK Cod_Estado - Chave Estrangeira FK Nome Fone ...


e para ficar tudo amarado vc poderia usar o componente DbLockupComboBox para filtra dados da tabela cidades de acordo com estado selecionado

no evento OnCloseUp do DBLookupComboBox Estados vc faz:
...
with SqlCidades do
 begin
  Close;
  CommanText := ´Select * From Cidades where Cod_Estados =´+SqlEstadosCod_Estado.AsString + ´ Order by Nome;
  Open;
  Sql
 end;


Espero ter ajudado! :wink:


GOSTEI 0
Souzaaguiar

Souzaaguiar

14/10/2006

Assim dah certo msm...
gostaria de saber se todos concordam em fazer dessa forma!

Obrigado!


GOSTEI 0
Souzaaguiar

Souzaaguiar

14/10/2006

select * from
tb_clientes a
left outer join
tb_cidades b
on a.cod_cidade=b.cod_cidade
left outer join
tb_estado c
on b.sigla_estado=c.sigla_estado

No evento do dropdown??


GOSTEI 0
Souzaaguiar

Souzaaguiar

14/10/2006

Errei na ultima lina... nao tem esse evento


GOSTEI 0
POSTAR