| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
Rogazzi Novato

Registrado: Quarta-Feira, 10 de Março de 2004 Mensagens: 50
|
Enviada: Qui Jan 23, 2020 3:05 pm Assunto: Circular Datalinks are not Allowed - Mestre Detalhe |
|
|
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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Sex Jan 24, 2020 8:17 am Assunto: |
|
|
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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Jan 24, 2020 8:47 am Assunto: |
|
|
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 |
|
 |
Rogazzi Novato

Registrado: Quarta-Feira, 10 de Março de 2004 Mensagens: 50
|
Enviada: Sex Jan 24, 2020 9:16 am Assunto: |
|
|
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 |
|
 |
Rogazzi Novato

Registrado: Quarta-Feira, 10 de Março de 2004 Mensagens: 50
|
Enviada: Sex Jan 24, 2020 9:19 am Assunto: |
|
|
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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Jan 24, 2020 9:39 am Assunto: |
|
|
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 |
|
 |
|