Problema Chaves Extranjeiras

17/07/2008

1

Boa tarde pessoal, tenho uma tabela Cidades e outra Clientes;

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.


Responder

Posts

17/07/2008

Brunodsr

Sinceramente nao entendi. O campo lookup so exibe o nome das cidades que existem cara. Ele relaciona as duas tabelas pelo codigo.

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.


Responder

17/07/2008

Eduardocar83

Bruno obrigado por tua atençao, e o seguinte, o que eu quero fazer e na hora do cadastro do cliente, inserir o nome da cidade e nao o codigo, que ele teste se existe esse nome de cidade na tabela Cidades, devolva o codigo, e seja esse codigo o que se armacene na tabela cliente.

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.


Responder

17/07/2008

Eduardocar83

quando falo de inserir o nome da cidade, e no formulario de cadastro de cliente...


Responder

18/07/2008

Webjoel

Olá amigo!

É 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!


Responder

18/07/2008

Eduardocar83

E isso ali webjoel, muito obrigado, e a segunda opcao que eu precisso implementar. E porque nao quero trabalhar com codigos no form de preenchimento, pelo fato de serem dificeis de lembrar.

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.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira