ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Circular Datalinks are not Allowed - Mestre Detalhe

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Rogazzi
Novato
Novato


Registrado: Quarta-Feira, 10 de Março de 2004
Mensagens: 50

MensagemEnviada: Qui Jan 23, 2020 3:05 pm    Assunto: Circular Datalinks are not Allowed - Mestre Detalhe Responder com Citação

Fala pessoal do bem, beleza??

É o seguinte, estou usando 2 tabelas com mestre detalhe.

Tabela Propritario
IDProprietario
NomeProprietario
etc...

Tabela Casa
IDCasa
IDProprietario
etc...

Estou usando Firedac com FDQuery, onde eu faço o seguinte:
Select * From tabelacasa Where IDProprietario = :IDProprietario
E faço todas as ligações no Object Inspector entre as 2 tabelas

Porém no DBGrid eu não quero que apareça o IDProprietario e sim o nome dele (lógico) e o que eu fiz foi o seguinte:

Na Tabela Casa eu criei uma field do tipo Lokkup e no Lookup Definiton liguei as tabelas mas na hora de usar o aplicativo gera o erro.

Como posso solucionar o problema?

Brigadão
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Sex Jan 24, 2020 8:17 am    Assunto: Responder com Citação

Amigo, isto é por causa de referencia cruzada, por isto o erro. Exemplo:
Se A faz referencia a B e B faz referência a A, aí neste ponto acontece o erro.

Isto pode ser algum erro na arquitetura de suas tabelas que fez ter estas referências cruzadas, se for isto, repense a estrutura de suas tabelas.


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I


Editado pela última vez por johnny-walker em Seg Jan 27, 2020 8:57 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Jan 24, 2020 8:47 am    Assunto: Responder com Citação

Bom dia,

Rogazzi, não sei se entendi corretamente mas acho que não é comum nesse tipo de caso exibir o nome do proprietário no DBGrid porque será sempre o mesmo para todos os registros exibidos nele. Acho que é mais comum exibir o nome fora do DBGrid com um DBEdit por exemplo.
Se for o caso de exibir mesmo o nome no DBGrid, acho que uma alternativa seria criar um campo do tipo calculado na query detalhe e utilizar código para atribuir a esse campo o valor do campo nome da query mestre (que já vai estar posicionada no registro correto).

Espero que ajude


Editado pela última vez por imex em Dom Out 01, 2023 4:29 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Rogazzi
Novato
Novato


Registrado: Quarta-Feira, 10 de Março de 2004
Mensagens: 50

MensagemEnviada: Sex Jan 24, 2020 9:16 am    Assunto: Responder com Citação

johnny-walker, obrigado pela resposta, mas não consegui entender a sua citação com relação as tabelas.
Vou postar aqui um resumo delas:
Tabela Pai (tab_proprietario)
IDProprietario
NomeProprietario
CPF
etc...

Tabela Filho (tab_casa)
IDCasa
IDProprietario
End
Cidade
etc...

Na tabela Filho (tab_casa) tem FK onde eu coloco delete em cascata no campo IDProprietario das 2 tabelas

No Delphi eu fiz um mestre detalhe me baseando em exemplo da internet. Eu nunca tinha trabalhado com mestre/detalhe

No componente FDQuery da tab_casa eu coloquei assim:
Select * From tab_casa Where IDProprietario = :IDProprietario e linkei as propriedades necessárias no object inspector

Não consegui ver onde essa arquitetura está errada. Você pode me ajudar?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Rogazzi
Novato
Novato


Registrado: Quarta-Feira, 10 de Março de 2004
Mensagens: 50

MensagemEnviada: Sex Jan 24, 2020 9:19 am    Assunto: Responder com Citação

Oi imex, muito obrigado pela sua ajuda.

É uma boa ideia a sua, mas achei que tivesse algo mais simples para este tipo de problema.

Estou repensando se fale a pena fazer mestre/detalhe direto no FDQuery ou se é melhor trabalhar com Querys temporários.

Com relação ao DBGrid, é que neste Grid vão aparecer vários registros de vários proprietário, por isso quero que apareça o nome

Mas valeu a dica.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Jan 24, 2020 9:39 am    Assunto: Responder com Citação

Mas com a clausula Where da sua query só serão retornados registros de um proprietário:

Código:
Where IDProprietario = :IDProprietario


Acho que não é o caso de utilizar mestre / detalhe se você pretende exibir registros de vários proprietários diferentes.

Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB