[resolvido] ireport mestre e detalhe

Antes de tudo agradeço a quem ler e mesmo que não tenha como ajudar (especialmente a quem passe uma solução para o meu problema…rs). Bom a minha questão é a seguinte, estou usando o ireport 3.0 (precisa ser feito nesta versão) preciso construir um relatório mais ou menos como um “mestre x detalhe”, onde eu tenha uma lista de mestres, em cada mestre eu exiba os detalhes, obviamente os detalhes de um mestre não pode aparecer dentro do outro, terei que usar como data source um xml, então montei esse xml abaixo como exemplo:

<relatorio> <mestre> <item_mestre>1</item_mestre> <detalhe> <item><valor>a</valor></item> <item><valor>s</valor></item> <item><valor>d</valor></item> </detalhe> </mestre> <mestre> <item_mestre>2</item_mestre> <detalhe> <item><valor>f</valor></item> <item><valor>g</valor></item> <item><valor>h</valor></item> </detalhe> </mestre> <mestre> <item_mestre>3</item_mestre> <detalhe> <item><valor>j</valor></item> <item><valor>k</valor></item> <item><valor>l</valor></item> </detalhe> </mestre> </relatorio>

então vamos ao problema, eu simplesmente tentei de múltiplas formas e não consegui fazer funcionar da forma que descrevi, ou acabava por exibir todos os detalhes de todos os mestres “em cada mestre”, ou acabava não exibindo os detalhes, tentei montar um relatório como o mestre e um sub-relatório como o detalhe, tentei criar o report group e gerenciar nele mas não consegui usar isso muito bem, enfim.

eu tinha encontrado esse link: http://ireport.sourceforge.net/cap7.html que é o que eu quero, mas pelo que entendi do que estava sendo feito (não passam os jrxml do que foi feito nestes exemplos, pelo que eu entendi estão definindo os fields como a query xpath completa da tag root até a do campo, mas se fizer isso vai pegar só o primeiro valor e ficar repetindo e não pegar cada um dos valores.

basicamente os data sources que eu usaria ai seriam até a tag mestre (/relatorio/mestre) no relatorio mestre e até a tag item (/relatorio/mestre/detalhe/item) no subrelatório, que é o detalhe, colocando a tag valor no campo.

alguém ai tem como me ensinar a fazer isso?

Boa tarde!

Bom eu tentaria por agrupamento, com o id do mestre no grupo e os detalhes sendo mostrados para cada mestre, tive relatórios semelhantes que resolvi com os agrupamentos, mas vc disse que ja tentou isso né, certa vez fiz um relatório que listava as unidades produtivas(como se fosse o mestre) e no detalhe eu retornei os dados sobre paradas, insumos utilizados, pessoas envolvidas, etc…, para esse caso deu certo. No seu caso cada mestre tem seu prórpio id ? caso tenha, porque o grupo nao funcionou?

Att.

então, eu na verdade não sei bem como fazer agrupamento no ireport, enquanto respondia aqui continuava indo testando de um jeito, de outro, acabei por conseguir funcionar (felizmente posso decidir no momento como o xml vai vir, vou explicar tudo):

O que estava tentando fazer usando agrupamento é o seguinte:

criei a fonte de dados xml e o relatório em branco (deixando a query xpath como “/relatorio/mestre”;

criei o grupo de relatórios deixando marcado naquela parte “Expressão do grupo” o meu field que aponta pra tag “item_mestre”, deixei um field no header deste grupo com o valor desta tag;

criei um sub-relatório e deixei na detail com a query xpath como “/relatorio/mestre/detalhe/item”;

ainda acontece aquilo, por exemplo para esse xml ai exibe:

1 a s d f g h j k l 2 a s d f g h j k l 3 a s d f g h j k l

então eu tirei o sub-relatório e tentei o field na banda detail apontando para “detalhe/item/valor”, mas ai então vinha apenas o primeiro “detalhe/item/valor”, para cada mestre, ignorando os outros dois.

sendo assim, vi esse link que usa javabeans e não xml e procurei aplicar pro meu caso, alterei o field na detail para apenas “valor” e o xml para o seguinte (infelizmente tendo que repetir a pagina toda hora):

[code]<relatorio>
<mestre>
<item_mestre>1</item_mestre>
<valor>a</valor>
</mestre>
<mestre>
<item_mestre>1</item_mestre>
<valor>s</valor>
</mestre>
<mestre>
<item_mestre>1</item_mestre>
<valor>d</valor>
</mestre>

&lt;mestre&gt;
	&lt;item_mestre&gt;2&lt;/item_mestre&gt;
	&lt;valor&gt;f&lt;/valor&gt;
&lt;/mestre&gt;
&lt;mestre&gt;
	&lt;item_mestre&gt;2&lt;/item_mestre&gt;
	&lt;valor&gt;g&lt;/valor&gt;
&lt;/mestre&gt;
&lt;mestre&gt;
	&lt;item_mestre&gt;2&lt;/item_mestre&gt;
	&lt;valor&gt;h&lt;/valor&gt;
&lt;/mestre&gt;

&lt;mestre&gt;
	&lt;item_mestre&gt;3&lt;/item_mestre&gt;
	&lt;valor&gt;j&lt;/valor&gt;
&lt;/mestre&gt;
&lt;mestre&gt;
	&lt;item_mestre&gt;3&lt;/item_mestre&gt;
	&lt;valor&gt;k&lt;/valor&gt;
&lt;/mestre&gt;
&lt;mestre&gt;
	&lt;item_mestre&gt;3&lt;/item_mestre&gt;
	&lt;valor&gt;l&lt;/valor&gt;
&lt;/mestre&gt;

</relatorio>[/code]

a sim claro… “valeu mano”…rs

Interessante sua solução, mas para o caso da repetição, poderiamos aplicar um segundo grupo, dentro do grupo mestre, fazendo uma segunda quebra e separando os sub-itens de cada mestre sem repetir, mas legal sua solução, qualquer coisa em ireport tamos ai.

Att.