Fórum PROBLEMA COM MESTRE-DETALHE E LOOKUP #377986
20/05/2010
0
Eu fiz alguns programas e notei um problema quando uso lookup no detalhe do mestre-detalhe. Sendo assim, criei um sistema simples para que eu possa expôr minha dúvida:
Criei um banco de dados chamado BD.fdb (Firebird) com 4 (quatro) tabelas:
1) CDS, cujos fields são: IDCDS, NOME, PRECO;
2) ESTILOS, cujos fields são: IDESTILOS, NOME, ANO;
3) MUSICAS, cujos fields são: IDMUSICAS, TITULO, AUTO, IDESTILOS (fk), IDCDS (fk);
4) MUSICASFAVORITAS, cujos fields são: IDMUSICASFAVORITAS, IDCDS (fk), IDMUSICAS (fk);
Com isso criei o seguinte Data Module:
Meu formulário Principal é o seguinte:
Como pode-se ver, o Mestre-Detalhe funciona direitinho.
Mas, ao realizar o cadastro das músicas favoritas com lookup de CDS e Músicas ocorre um problema. Por exemplo, ao realizar o cadastro de numero 6, eu informei que o CD que eu gosto é do United e a musica é Jesus. Quando eu salvei, todas as outras músicas somem. Ou seja, só aparece no grid o Mestre, mas os detalhes somem, ficando somente o último registro. Alguém sabe por que isso acontece?
Pessoal, espero que entendam e que possam me ajudar.
Grato,
Rafael
Rafael Ribeiro
Curtir tópico
+ 0Posts
20/05/2010
Wilson Junior
Qualquer coisa é só perguntar.
Espero ter colaborado.
Gostei + 0
20/05/2010
Rodrigo Mourão
Bem vamos lá. Primeiro existe um problema de modelagem no seu banco. A Tabela MUSICASFAVORITAS possui relação com MUSICAS e CDS porem MUSICAS ja tem relacão com CDS, assim relacionando MUSICAS sabemos automaticamente qual é o CD.
O problema está ai pois quando criarmos um lookup estamos fazendo relação direta com um DataSet e no seu caso ao selecionar um CD no Lookup de Musicas favoritas você esta alterando o ponteiro do DataSet e com isso os controles podem ser perder.
Na verdade o que você quer requer 2 master details:
1) CDS e Musicas
2) Lista de Favoritas e Musicas
Altere da Tabelas MUSICASFAVORITAS para LISTA_FAVORITOS
LISTA_FAVORITOS fields são: IDLISTASFAVORITOS, DESCRIÇÃO;
LISTA_FAVORITOS_ITENS fields são: IDLISTASFAVORITOS, IDMUSICAS (fk);
No cadastro de musicas favoritas vc coloca um DBLookUpComboBox para exibir os nomes das músicas e gravar o ID das mesmas na tabela LISTA_FAVORITOS_ITENS.
Acho que é por ai.
Abraços e boa sorte.
Gostei + 0
21/05/2010
Rafael Ribeiro
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)