Fórum Master-Detail... somente que possuem detail #229106

30/04/2004

0

E ai galera...

como eu poderia fazer um Master/Detail, mas que mostrasse somente os Masters que possuem Details (como se fosse um SELECT)...

Detalhe... tem que ser Master/Detail pq as tabelas estão em bancos diferentes...

Delphi 7
DBExpress


Kotho

Kotho

Responder

Posts

01/05/2004

Tnaires

Supondo:
Tabela1: id_tabela1, campo1 (mestre)
Tabela2: id_tabela2, id_tabela1, campo2 (detalhe)

Query 1: só mostra os registros que contêm detalhes na tabela 2;
- SELECT * FROM Tabela1 WHERE EXISTS (SELECT * FROM Tabela2
WHERE Tabela2.id_tabela1 = Tabela1.id_tabela1)
Query 2:
- SELECT * FROM Tabela2 WHERE id_tabela1 = :id_tabela1

Crie um DataSource para o Query1 e associe-o à propriedade DataSource do Query2.


Responder

Gostei + 0

03/05/2004

Kotho

kra... obrigado pela atenção, mas essa alternativa não funcionaria, porque, como eu disse acima, as tabelas estão em bancos diferentes...


Responder

Gostei + 0

03/05/2004

Djjunior

kra supondo que vc esteje usando SQLServer basta colocar o ´caminho completo do banco´ antes do nome do mesmo tipo:

select * from banco.own.suatabela


Responder

Gostei + 0

03/05/2004

Kotho

Mais uma vez obrigado a todos vocês, mas eu acho que não tem como fazer automaticamente, porque são dois bancos diferentes mesmo... um é Oracle e outro é ZIM (acho que poucos ouviram falar deste aqui)...

Estou pensando em colocar um campo calculated, e no onCalcFields procurar outro banco...


Responder

Gostei + 0

04/05/2004

Tnaires

Olá
Vc está usando dbExpress certo?
Se vc usar um SQLTable e indicar os campos corretamente na propriedade MasterFields, a relação funciona independente do(s) banco(s). Mas com SQLQuery, não sei como indicar os nomes dos campos, talvez se eles tiverem o mesmo nome, funcione...


Responder

Gostei + 0

05/05/2004

Kotho

o problema não está no relacionamento em si, pois isto está funcionando... O problema (meu) é que eu queria que retornassem os masters que possuem details somente, e o que acontece é que todos os registros da tabela master são retornados... Mas mesmo assim, muito obrigado...


Responder

Gostei + 0

05/05/2004

Cabelo

Faça assim..

Vc na verdade não precisa das duas tabelas, Ok, se é um master detail, significa que os dados da tabela detalhes será ´amarrada´ com os dados da tabela mestre, se é assim, basta ter duas query´s, uma vc dá um Select distinct na tabela detalhes e a outra o select dos dados correspondentes aos da 1ª query, se não for assim, vc pode tb dar um select nas tabelas, sendo na tabela mestre todos os registros e o mesmo select distinct na 2ª tabela, com query´s diferentes, depois disso use um string grid, e compare as duas query´s, aquelas que tiverem os registros iguais, significa que tem dados nas duas tabelas, e vai implementando o string grid, e claro em outro string grid, vai dando um novo select nos dados da tabela detalhe, e implementando o novo string grid..

espero ter ajudado..

sem mais

Cabelo


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar