IReport - Subrelatorio? [RESOLVIDO]

Olá pessoal!

Estou comçando com I Report e estou com uma duvida… nao sei se uso Sub Report pra uma questao q tenho…

O modelo do relartorio que tenho q fazer é o seguinte :
No meio de um texto grande (muito texto pra cima e pra baixo) tenho q colocar uma lista que eu passo via data source…
fica assim :

texto texto texto texto
texto texto texto texto
(…)
texto texto texto texto
texto texto texto texto
lista lista lista lista
lista lista lista lista
(…)
lista lista lista lista
lista lista lista lista
texto texto texto texto
texto texto texto texto
(…)
texto texto texto texto
texto texto texto texto

o texto é fixo e cheio de parametros q eu passo via map
ai eu nao sei se eu tenho q fazer um sub na parte da lista e colocar o resto em duas "detail"
já tentei fazer de varios jeitos sem usar sub report, mas nao deu… pq tem q ficar tudo continuo… nao pode mudar a pagina se a lista nao for grande o suficiente… e tem page footer e header em cada pagina…

acho q deve ser facil pra quem tem mais experiencia…
tenho achado muito tutorial na net… mas as versoes sao tao antigas!
os subreports q tentei fazer nao deram certo… to usando a versao mais nova…

ideias?

mas não seria só passar a lista por parâmetro?
não sei se vai ser preciso um sub-relatório pra isso (a menos que você tenha uma lista dentro de outra lista)
ou eu não entendi muito bem o seu problema…

Opa Erico… valeu pela atenção aa minha duvida!
Entao cara… a principio eu achei q ia ser moleza tbem… so q pelos textos acima e abaixo da lista serem muoto grandes, dificultou todo o processo…
estou começando a achar q a versao mais nova esta ate bugada… :frowning:
Eu ja tentei fazer assim:
texto fixo
lista
texto fixo
tudo isso dentro de um detail… so q eu deixava o texto fixo como “no repeated values” pra ele nao repetir… mas zuava tudo…
ja tentei colocar o texto fico de cima em na header e o texto final em um summary, mas o summary sempre pula pra proxima pagina (mesmo habilitando a opcao no propreties do report pra nao faze-lo - oq já é padrao…)
é dificil explicar essas coisas de report sem mostrar… acho q vou colocar isso online e passo o link pra quem quiser dar uma olhada em onde estou errando… IReport nao está muito intuitivo na minha opiniao…

ja segue o link :
http://dl.dropbox.com/u/4378093/relatorios/exemplo.jrxml

Obrigado pela ajuda cara!
AbraXXX

o tipo da sua ‘lista’ é String?
caso sim, o relatório é gerado quando a String é menor?

vixi cara axo que vc deve fazer um sub sim,coloca os textos fixos de cima no cabecalho,a lista vc passa para o sub,e no rodape do sub ou cria uma banda de agrupamento e coloca o resto do texto fixo nela

Opa… valeu pelas ideias pessoal… entao… eu decidi criar um subreport mesmo pra fazer so a parte da lista
dei uma pesquisada na net e nao consgui aprender a fazer… pq no meu caso eu so tenho q listar o datasource q eu passo pro relatorio…
como eu faço essa associação no subreport?

tipo, eu tenho q criar um parametro no relatorio mestre de que tipo? é relatorio ou field q eu tenho q criar?
se alguem souber de algum tutorial eu agradeco, mas ja adianto q nao vi nenhum q faz isso utilizando um datasource…

estou usando o report 3.6… segui esses passos aqui : http://mytrees.cz/documentation/how-to/how-to-use-ireport/
mas nao deu certo… exatamente pq ele considera q eu quero fazer um select e mostrar itens de acordo com um relacionamento com algum item do mestre…
eu simplemente quero mostrar a litsa q eu passar do mestre para o subreport…
espero ter sido claro… :lol: confuso explicar isso!
vlw pela ajuda pessoal!

Cara… dá uma olhada neste link. Acho que pode te ajudar…

Fala Erico… ajudou demais cara… pra falar a verdade foi o turorial que chegou ate agora mais proximo do que eu queria fazer
o problema é q nao deu certo. Segui o tuto certinho, tive varias exceoptions q fui corrigindo mas no final nao deu… os dados q eu passo no arraylist nao são impressos e o pior é q nem dá nenhuma mensagem de erro… :frowning:
fiz um metodo que exemplifica oq eu to tentando fazer no java. Segue :

import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;

public class GeraRelatorio {
	
	
	
public void gerarRelatorioRTF(){
		
		try{
			
			HashMap<String, Object> parameters = new HashMap<String, Object>();
			
			List<Veiculo> veiculoList = new ArrayList<Veiculo>();
			veiculoList.add(new Veiculo("Corsa", "Ford", "ASD1234", new Long(1998)));
			veiculoList.add(new Veiculo("Uno", "Fiat", "XXX7777", new Long(1990)));
			veiculoList.add(new Veiculo("Gol", "Volks", "GGG6666", new Long(1985)));
			veiculoList.add(new Veiculo("HondaFit", "Honda", "PPP0000", new Long(2000)));
			
									
			JRBeanCollectionDataSource ds = new	JRBeanCollectionDataSource(veiculoList);
			
			parameters.put("param1","param1");
			parameters.put("param2","param1");
			parameters.put("param3","param1");
			parameters.put("veiculos",ds);
			
			InputStream reportStream = this.getClass().getResourceAsStream("teste_master.jasper");
			
			JREmptyDataSource emptyDataSource = new JREmptyDataSource();			
			
			parameters.put("veiculos",  ds);
						
			JasperPrint jasperPrint = JasperFillManager.fillReport(reportStream, parameters, emptyDataSource);
			
			JasperViewer viewer = new JasperViewer(jasperPrint , false);    
			
			viewer.setVisible(true);  
			
			
		}catch(Exception e){	
			System.out.println("Erro ao gerar report : "+e.getMessage());
			e.printStackTrace();
		}	
		

	}	



}

os dois reports estao nos respectivos links :
Report Master : http://dl.dropbox.com/u/4378093/masterReport.rar
Report Sub : http://dl.dropbox.com/u/4378093/subreport.rar

Espero que possam me ajudar… está tudo muito simples de entender… devo estar errando alguma coisa que mudou de acordo com as versoes… novamente, estou usando o IReport 3.6

Obrigado pessoal

Olá.
Ao invéz de fazer assim:

			JasperPrint jasperPrint = JasperFillManager.fillReport(reportStream, parameters, emptyDataSource);	

Tente assim:

			JasperPrint jasperPrint = JasperFillManager.fillReport(reportStream, parameters, ds);	

[]'s
JL

acho q vc teve o mesmo raciocinio q eu tive a pouco tempo atras…
o problema acho q era nas configuracoes (propriedades) do relatorio mestre
oq acontece é q como eu nao passo nenhum dado pro relatorio mestre (vulgo EmptyDataSource), ele por padrao nao mostra nada, gera um doc em branco…
Mas nessas propriedades tem como vc configurar varios jeitos dele se comportar…
Mudei isso para ele parar de gerar tudo em branco e funcionou…

Esse topico ficou muito bem explicado…
Valeu ai ao pessoal que ajudou!

Abraços!