Agrupando dados em Relatórios
Como faço para mostrar os dados na forma de Mestre/Detalhe, utilizando somente SQL e o gerador de Relatório Fortes?
Por exemplo, o produto X tem ´n´ componentes, como mostrar o nome do Produto, depois seus componentes, depois outro produto e seus componentes e assim sucessivamente.
Por exemplo, o produto X tem ´n´ componentes, como mostrar o nome do Produto, depois seus componentes, depois outro produto e seus componentes e assim sucessivamente.
Fmd
Curtidas 0
Respostas
Tnaires
27/12/2003
Opa td jóia?
Aprendi a fazer isso há pouco tempo atrás. O segredo está em montar a estrutura dos queries corretamente. Vamos supor q temos as seguintes tabelas:
TAB1
-ID_1
-CAMPO1
-CAMPO2
TAB2
-ID_2
-ID_1
-CAMPO1
-CAMPO2
As tabelas se relacionam pelo campo ID_1 (q é chave estrangeira d TAB2). Vamos montar um query para cada tabela, com os seguintes SQLs:
Query1: SELECT * FROM TAB1
Query2: SELECT * FROM TAB2 WHERE ID_1 = :ID_1
Agora vamos criar um datasource para a Query1, com nome de dsQuery1. Na propriedade DataSource do [u:4d7599eefd]Query2[/u:4d7599eefd], colocamos dsQuery1. Pronto, a estrutura dos queries está feita!
Crie outro datasource para o Query2 com o nome dsQuery2. Coloque uma banda Detail para o Query1, e associe a ela o dsQuery1. Finalmente, crie um SubDetail e associe a ele o dsQuery2.
Espero q funcione! Sucesso.
Aprendi a fazer isso há pouco tempo atrás. O segredo está em montar a estrutura dos queries corretamente. Vamos supor q temos as seguintes tabelas:
TAB1
-ID_1
-CAMPO1
-CAMPO2
TAB2
-ID_2
-ID_1
-CAMPO1
-CAMPO2
As tabelas se relacionam pelo campo ID_1 (q é chave estrangeira d TAB2). Vamos montar um query para cada tabela, com os seguintes SQLs:
Query1: SELECT * FROM TAB1
Query2: SELECT * FROM TAB2 WHERE ID_1 = :ID_1
Agora vamos criar um datasource para a Query1, com nome de dsQuery1. Na propriedade DataSource do [u:4d7599eefd]Query2[/u:4d7599eefd], colocamos dsQuery1. Pronto, a estrutura dos queries está feita!
Crie outro datasource para o Query2 com o nome dsQuery2. Coloque uma banda Detail para o Query1, e associe a ela o dsQuery1. Finalmente, crie um SubDetail e associe a ele o dsQuery2.
Espero q funcione! Sucesso.
GOSTEI 0
Fmd
27/12/2003
[b:66548e2b8e]tnaires[/b:66548e2b8e], infelizmente não funcionou. Ele não mostra o SubDetail.
Se você souber como fazer de uma outra forma eu agradeço.
Se você souber como fazer de uma outra forma eu agradeço.
GOSTEI 0
Tnaires
27/12/2003
Verifique se vc inseriu o seu subdetail [u:b634caf81a]dentro[/u:b634caf81a] do detail. Se inserir do lado de fora (como no quickreport) não funciona.
Abraços
Abraços
GOSTEI 0
Fmd
27/12/2003
Está tudo certo, porém não quer funcionar de maneira nenhuma.
Se você tiver algum exemplo de como eu faria para isso funcionar, poderia enviar uma cópia para o meu e-mail: felipemartins@terra.com.br
Obrigado pela atenção.
Se você tiver algum exemplo de como eu faria para isso funcionar, poderia enviar uma cópia para o meu e-mail: felipemartins@terra.com.br
Obrigado pela atenção.
GOSTEI 0
Tnaires
27/12/2003
Pronto fmd, enviei o programa, com um exemplo do quickreport e outro do fortes.
Sucesso
Sucesso
GOSTEI 0
Tnaires
27/12/2003
Detalhe:
Vc vai ter q mudar o ConnectionString do ADOConnection.
Escolha o Driver Microsoft Jet e, no caminho do banco, digite ´./MasterDetail.mdb´ (sem as aspas). Desse jeito ele pega em qq pasta q vc botar.
Vc vai ter q mudar o ConnectionString do ADOConnection.
Escolha o Driver Microsoft Jet e, no caminho do banco, digite ´./MasterDetail.mdb´ (sem as aspas). Desse jeito ele pega em qq pasta q vc botar.
GOSTEI 0
Fmd
27/12/2003
Valeu [b:0dc690610b]tnaires[/b:0dc690610b]. Feliz Ano Novo e Sucesso. :lol:
GOSTEI 0