Inclusão de Telefone

Delphi

14/02/2010

Boa tarde a todos!!!   Eu tenho uma tabela CLIENTES onde gravo dados deles e uma outra chamada TELEFONES_CLIENTE, onde gravo os telefones do cliente selecionado. Na tela, tenho os botões novo, cancelar, gravar, e abaixo uma área com um grid contendo os telefones do cliente. Abaixo, há os botões incluir telefone, cancelar telefone, gravar telefone, alterar telefone e excluir telefone.   Quando o usuário acessa à tela de cadastro de clientes, apenas o botão novo e fechar ficam habilitados. Para cadastrar um cliente, o usuário clicará em novo, e os campos ficaram habilitados para a digitação dos dados, além dos botões para inclusão de telefone. Quando ele preenche os dados pessoais e clica no botão incluir telefone para preenchimento dessa informação. Após essa etapa, ele terá que clicar no botão gravar telefone. É aí que está o X da questão. A tabela CLIENTES tem o campo chave CLI_ID, e na tabela TELEFONES_CLIENTE tem o campo TCL_ID, além do CLI_ID para fazer a referência da informação. Neste momento, o valor CLI_ID da tabela TELEFONES_CLIENTE é zero porque eu ainda não gravei os dados na tabela CLIENTE, e aí temos aquele erro clássico de foreign key.   Eu pensei em algumas coisas, como por exemplo ao clicar no botão incluir telefone aparecer uma mensagem tipo "Você precisa gravar os dados do cliente antes de incluir o telefone. Deseja gravar agora antes de prosseguir?". Não sei se isso é uma forma prática, afinal temos que fazer algo que não implique em muitos cliques para fazer um simples cadastro e que seja intuitivo para o usuário.   Ah, antes que eu me esqueça, o projeto é desenvolvido em Delphi 2010 + firebird + RAD (é o jeito quando os prazos estão apertados..rsrsrsrsrsrs)   Gostaria de saber a opinião de vocês e qual seria a melhor recomendação para esta situação.     Um grande abraço.     Rogério
Rogerio Merlotti

Rogerio Merlotti

Curtidas 0

Respostas

Tiago Melo

Tiago Melo

14/02/2010

olá rogério este é o classico relacionamento master/detail ou mestre/detalhe...pesquise aqui mesmo no devmedia sobre como criar cadastros mestre/detalhe que seu problema será resolvido de forma muito simples, prática, funcional e politicamente correta ok? qualquer coisa posta ai....
GOSTEI 0
Rogerio Merlotti

Rogerio Merlotti

14/02/2010

Como vai amigo Tiago, blz?   Olha, eu até pesquisei no fórum antes de postar, mas eu não encontrei uma situação semelhante a minha.   Para melhor entendimento, vai aí o layout da tela (essa ainda tem o endereço, que não citei no post).       Vlw pela resposta.   Abraços.        
GOSTEI 0
Rogerio Merlotti

Rogerio Merlotti

14/02/2010

Desculpe-me Tiago, não tô conseguindo exibir a imagem, acho que devo ter feito alguma besteira.   É pequena, tem pouco menos de 20k. Para vc ter uma ideia sobre o layout, a maioria dos componentes é edit, alguns maskedits, e dois grids, um para telefone e outro para endereço.   Vou tentar, assim que conseguir, te mando pra vc dar uma olhada.   Vlw.   Abraços.
GOSTEI 0
Pjrm1470

Pjrm1470

14/02/2010

amigo,
C:UsersClaytonDesktopSem título.jpg
isto n eh um endereço valido. creio que seria:
C:\Users\Clayton\Desktop\Sem título.jpg

editando o codigo fonte da pagina da para ver o endereco que esta gravado.
-----------
Mesmo que não ache conteúdo de mestre/detalhe aqui no devmedia.... o google lhe dara outros sites lhe mostrando como criar uma sem problemas. Estou sem exemplos agora.

quanto a imagem... Use um http://imageshack.us/ para criar um hospedar a imagem. Fica mais facil as vezes.

Boa sorte e bons codigos. xD
pjrm1470.
GOSTEI 0
Rogerio Merlotti

Rogerio Merlotti

14/02/2010

Valeu cara!   Eu fiz um cadastro como vc me havia sugerido, e já coloquei a imagem lá. Muito boa essa dica.   Caso não funcione, o link é este:   http://img692.imageshack.us/img692/8265/semttulozz.jpg     Nesta tela, tem a parte do endereço, que não havia mencionado anteriomente. Os campos estão aparecendo porque já havia clicado em Incluir endereço, o mesmo acontece com o telefone. Nos dois casos estou usando pagecontrol, uma página fica para o grid e a outra para os campos.   Eu havia pensado no master-detail, mas pelo layout da tela não sei se seria possível fazer. Em outro fórum, foi me sugerido trabalhar com clientdataset temporário, acredito que seja uma boa opção, estou analisando.   Caso você ou outro amigo que estiver lendo este tópico tiver sugestões, por favor fique à vontade.   Obrigado pela ajuda.   Abraços.   Rogério
GOSTEI 0
Tiago Melo

Tiago Melo

14/02/2010

Rogério e ai tudo blz? seguinte, esse seu caso se resolve de maneira coerente com mestre/detalhe ok? veja essa video aula do eversom volaco mostrando como é simples trabalhar com este tipo de relacionamento https://www.devmedia.com.br/articles/viewcomp.asp?comp=1744&;hl=*mestre* and *detalhe* podem até existir outras formas de se obter esse resultado, porém como eu disse a mais coerente é utilizando-se desse artificio que para esses casos é o mais correto. um grande abraço qualquer coisa posta ai. 
GOSTEI 0
Rogerio Merlotti

Rogerio Merlotti

14/02/2010

Como vai Tiago, blz?   Assistirei a esta vídeo que vc me sugeriu e lhe darei um retorno. Como não estou utilizando componentes dataware (exceto o dbgrid), acho que dá pra montar o master-detail mesmo assim, não é?   Abraços.
GOSTEI 0
Fábio Cruz

Fábio Cruz

14/02/2010

Amigo, como vc faz para pegar a chave primaria do cliente?
Vc poderá utilizar algo semelhante e atribuir essa chave no campo idcliente antes de salvar.
GOSTEI 0
POSTAR