Problema Chaves Extranjeiras
17/07/2008
0
Cidades
CodigoCidade int
NomeCidade varchar
Clientes
CodigoCliente int
CodigoCidade int
tenho tambem um formulario para cadastrar clientes com componentes dbEdit, na hora de cadastrar a cidade do cliente, eu gostaria inserir o nome da cidade, mas que na verdade na tabela ele insira o codigo da cidade depois de testar se a cidade existe.
Ja tentei com os campos lookup, e nada. Ou sera que nao e posivel so com controles dbEdit.
Obs.: estou trabalhando com dbexpress + clientDataSet + Firebird. Obrigado antecipadamente pela ajuda.
Eduardocar83
Posts
17/07/2008
Brunodsr
Coloca aí um print da tela configurada veio. Dos campos no fields editor. Pq acho q tem alguma coisa errada no teu lookup.
Espero ter ajudado.
17/07/2008
Eduardocar83
E tipo assim o processo inverso do que faz o lookup me parece. Porque ele pega o codigo da cidade , e mostra o nome da cidade. Desculpa a complicaçao. Muito grato por tua atencao.
17/07/2008
Eduardocar83
18/07/2008
Webjoel
É possível fazer isso sim e não é muito complicado, o problema é que você vai encontrar alguns problemas, tipo, se tiver duas cidades com o mesmo nome cadastrado, ou mesmo existir mas ser de outro estado, você tem q pensar bem nessa estrutura, mas se mesmo assim você deseja continuar faça o seguinte:
1ª Opção (a correta):
Coloque no Form, o DBEdit do codigo da cidade, ao lado um botão pra pesquisar as cidades e logo depois o dbedit no nome da cidade.
No botão de pesquisar você vai chamar o formulário de consulta de cidades, assim o usuário escolhendo a cidade retorna para o formulario anterior, com o código da cidade, e no validade do campo do CodigoCidade você chama o nome daquela cidade escolhida, isso para você poder visualizar estas informações em tempo de edição também.
2ª Opção:
Você pode ter uma Edit normal e a DBEditCodigoCidade, neste caso, você pode inserir um código ao dar enter nessa edit para trazer o código da cidade no qual esse campo se refere, ex:
... var nome_cidade : string; begin nome_cidade := UpperCase(EditNomeCidade.Text); SQL_AUX.Close; SQL_AUX.CommandTex := ´select CodigoCidade from Cidades where Upper(NomeCidade) = ´ + nome_cidade; SQL_AUX.Open; ClientDataSetCodigoCidade.AsInteger := SQL_AUX.FieldByName(´CodigoCidade´).AsInteger; end;
Neste último Caso você também tem que criar um validade no campo CodigoCidade para trazer o nome da cidade e mostrar na tela em tempo de edição.
Boas compilações!
18/07/2008
Eduardocar83
So o edit para digitar o nome da cidade e do lado um botao de pesquisar en caso que o usuario nao lembre. Valeu, obrigado.
Clique aqui para fazer login e interagir na Comunidade :)