Ajuda: Passar 2 listas para o Ireport

2 respostas
B

Ola amigos,
Preciso passar 2 listas para o datasource do ireport passando 1 lista funciona prefeitamente.

A ideia é apresentar a nota embaixo dos livros mais preciso que seja em outra lista pois no meu projeto final o caso é outro esse foi um exemplo que encontrei na net e acrescentei a nota.

Obrigado pela atenção de todos.

public class Inicio {

	public void exibirRelatorio() {
		// Caminho do .jasper
		String caminhoRelJasper = "pasta/Livros.jasper";

		// Lista com beans dos livros
		List listaLivros = getLivros();
		
		// Lista com beans das avaliacoes
		List listaNota = getLivros();

	
		// O datasource original do exemplo
		JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(
				listaLivros);
		
		
		// O datasource que preciso enviar tambem
		JRBeanCollectionDataSource ds2 = new JRBeanCollectionDataSource(
				listaNota);

		// Parametros do relatorios
		Map parametros = new HashMap();

		JasperPrint impressao = null;
		try {

			impressao = JasperFillManager.fillReport(caminhoRelJasper, parametros, ds);
			JasperViewer viewer = new JasperViewer(impressao, true);
			viewer.setVisible(true);

		} catch (JRException e) {
			System.out.println(e.getMessage());
		}

	}

	public List getLivros() {
		List listaLivros = new ArrayList();
		Livro livro = new Livro();

		livro.setTitulo("Use a cabeça! Padrões de Projeto - Design Patterns");
		livro.setAutor("Freeman, Eric / Freeman, Elisabeth");
		livro.setIsbn("[telefone removido]");
		livro.setEditora("Alta Books");
		livro
				.setDescricao("Como você sabe que não quer reinventar a roda (ou, "
						+ "pior, um pneu furado), "
						+ "então você busca padrões de projetos");
		listaLivros.add(livro);

		livro = new Livro();
		livro.setTitulo("Entendendo e Dominando o Linux");
		livro.setAutor("Morimoto, Carlos");
		livro.setIsbn("[telefone removido]");
		livro.setEditora("Digerati");
		livro
				.setDescricao("Como o nome diz, este livro é uma obra destinada a "
						+ "todos aqueles que "
						+ "pretendem conhecer na prática e em detalhes os "
						+ "principais recursos oferecidos pelo Linux");
		listaLivros.add(livro);

		livro = new Livro();
		livro.setTitulo("Guia de Certificação em Java - Exame CX-310-035");
		livro.setAutor("Pereira, Rafael");
		livro.setIsbn("[telefone removido]");
		livro.setEditora("Ciência Moderna");
		livro.setDescricao("Este Guia de Certificação em Java é um livro "
				+ "fundamental para preparar os"
				+ " candidatos ao exame de programador Java da Sun, "
				+ "a primeira e mais "
				+ "requisitada certificação desta tecnologia.");
		listaLivros.add(livro);

		return listaLivros;
	}

	
	public List getNota() {
		List listaNota= new ArrayList();
		Nota nota = new Nota();

		nota.setNome_avaliador("Carlos");
		nota.setNota("5.0");
		listaNota.add(nota);

		nota = new Nota();
		nota.setNome_avaliador("Ricardo");
		nota.setNota("6.0");
		listaNota.add(nota);
		
		nota = new Nota();
		nota.setNome_avaliador("Anderson");
		nota.setNota("7.0");
		listaNota.add(nota);
		

		return listaNota;
	}
	
	
	
	public static void main(String[] args) {
		new Inicio().exibirRelatorio();
	}
}

2 Respostas

fernei

E ai blz…

O que vc precisa fazer e criar um sub-relatório ok?

Passa o datasource para o relatório, pega uma lista e desenvolva ela no relatório pai, em seguida passe a segunda lista para o relatório filho.

Da uma pesquisada pois aqui mesmo no forum em um tutorial de como criar sub-relatório no iReport.

Espero ter ajudado.

Vlw.

B

Ola Fernei,

Encontrei um tutorial na area de artigos do guj mais nao ajudo muito.

Vou usar um subrelatorio sim.

O que vc falou foi criar 2 data source e passar um data source para o pai e outro para o filho certo?

seria isso?

JasperFillManager.fillReport(caminhoRelJasper1, parametros1, datasource1 );
JasperFillManager.fillReport(caminhoRelJasper2, parametros2, datasource2 );

Obrigado pela ajuda.

Criado 18 de abril de 2009
Ultima resposta 18 de abr. de 2009
Respostas 2
Participantes 2