Gerrar relatorio a partir de duas listas

8 respostas
M

opa estava gerando relatorio com apenas um lista de objetos mas agora surgiu a necessidade de fazer com duas...

estou fazendo assim

JasperReport pathReport = JasperCompileManager.compileReport(caminho);	
			
	JasperPrint preencher = JasperFillManager.fillReport(pathReport, null,	new JRBeanCollectionDataSource(relatoriosOs));
					
	JasperExportManager.exportReportToPdfStream(preencher, responseStream);

tentei fazer assim mas não deu certo

JasperReport pathReport = JasperCompileManager.compileReport(caminho);			
			JasperPrint preencher = JasperFillManager.fillReport(pathReport, null,	new JRBeanCollectionDataSource(relatoriosOs));
			preencher = JasperFillManager.fillReport(pathReport, null,	new JRBeanCollectionDataSource(servicos));			
			JasperExportManager.exportReportToPdfStream(preencher, responseStream);

alguem sabe como posso fazer?

8 Respostas

luxu
M

não axei nada neste link

CharlesAlves

Eu não tenho certeza em relação a isso mas não seria o caso passar as listas como parametros?!

M

isso mesmo… eu gero um relatorio a partir de duas listas de objetos que eu passo… desse jeito aki as vezes da certo as vezes da pau

JasperPrint preencher = JasperFillManager.fillReport(pathReport, null, new JRBeanCollectionDataSource(relatoriosOs)); preencher = JasperFillManager.fillReport(pathReport, null, new JRBeanCollectionDataSource(servicos));

CharlesAlves

No caso sendo feito dessa forma são gerados dois relatorios e não um com as duas listas o que eu tava falando era passar as listas dentro de um map que depois seria passado como parametro para o relatorio.

M

entao tava vendo mesmo que dava pra fazer assim, mas nunca usei hasmap, c tem algum tuturial que explique como trabalhar com ele? grato

CharlesAlves

Ele é bem simples de trabalhar é só criar uma instancia dele e os dados seram associados a uma chave, e a partir delas podem ser recuperados diretamente. Vou fazer um exemplo simples de como ficariam os parametros para serem passados para o teu relatorio;

// cria uma instancia de map onde o primeiro parametro é a chave e o
			// segundo o objeto que ela representa, no caso para o ireport a
			// chave será o nome do parametro
			Map<String, Object> map = new HashMap<String, Object>();

			// as duas listas que no seu caso vão ser criadas de outra forma
			List<Object> lista1 = new ArrayList<Object>();
			List<Object> lista2 = new ArrayList<Object>();

			// e para adicionalas ao map é só usar o put, passado a chave e o
			// objeto
			map.put("lista1", lista1);
			map.put("lista2", lista2);

			// e para recuperar é só utilizar o nome da chave
			List<Object> novaLista = (List<Object>) map.get("lista1");

No ireport no é só ir no ireport inspector e criar parametros com os mesmos nomes que foram dados as listas e modificar o seu tipo para list

M

dexa eu ver se entendi

aki eu vou fazer assim agora

JasperPrint preencher = JasperFillManager.fillReport(pathReport, null,	new JRBeanCollectionDataSource(map));

e no relatorio vou mudar o tipo para list como?

Criado 29 de janeiro de 2012
Ultima resposta 30 de jan. de 2012
Respostas 8
Participantes 3