Organizar dados no Ireport

3 respostas
L

Boas pessoal,

Quero organizar o meu relatorio da seguinte forma :

Clientes Novos    // Este titulo é estático ( Static Text )

joao
paulo                            // A quantidades de clientes novos varia.
....
Isabel
--------------------------------------------------------------------------------
Clientes Antigos            // Este titulo é estático ( Static Text )

Samuel
gonçalo                        // A quantidades de clientes Antigos varia.
.....
Manuel

Os clientes todos vem da mesma fonte.
Gostaria de listar todos os clientes novos e depois listar todos os clientes antigo e separar esta duas listas com uma linha. é uma especia de duas listagens.

Como posso resolver isso ?

Obrigado desde ja !

3 Respostas

A
Faz um relatório principal que é a lista de novos usuários. Aí faz um outro com a lista de antigos. No primeiro você passa o segundo como parâmetro para ser sub dele. Assim:
new JRBeanCollectionDataSource((ArrayList)$F{listDetail})//por exemplo

Cria um parameter que pode chamar de pathSubRel.

Depois chama assim no seu código Java:
Map parameter = new HashMap();
						parameter.put("pathSubRel", "C:/Relatorio/Sub-ReportGroupByList.jasper");
			
			ArrayList<PhoneListReportVO> phoneList = populaObjetos ();
			JRBeanCollectionDataSource jrBean = new JRBeanCollectionDataSource(phoneList);
			
			StringBuffer bufferHTML = new StringBuffer();
			JasperPrint jrprint = JasperFillManager.fillReport("C:/Relatorio/ReportGroupByList.jasper", parameter , jrBean);
			JRHtmlExporter exporter = new JRHtmlExporter ();
			exporter.setParameter(JRExporterParameter.JASPER_PRINT, jrprint);
			exporter.setParameter(JRExporterParameter.OUTPUT_STRING_BUFFER, bufferHTML );
			
			exporter.exportReport();
			
			JasperExportManager.exportReportToPdfFile(jrprint,"C:/relatorio/ReportGroupByList.pdf");
F

Talvez o interessante seria vc separar isso
no código, e mandar duas listas distintas
para o jasper: veja esse artigo

http://blog.apollo-ti.com/?p=8

entao vc poderia criar 2 sub relatorios
acredito que seja uma opção mais tranquila…

FLwS…

P

Bom dia!

Estou aproveitando este tópico para expressar minha dúvida sobre "JRBeanCollectionDataSource com Properties".

           Ao invés de passar um ArrayList de Object´s, porque não posso passar um ArraList de Properties?

           Tem que haver uma forma do Report entender isso.

           Quem pode me ajudar?
ArrayList<Object> alItens = new ArrayList<Object>();
    				
					Properties pItens = new Properties();
					pItens.put("NumItem", 1);
					pItens.put("Local", "Local 1");
					pItens.put("Defeito", "Defeito 1");
					pItens.put("Descricao", "Descricao 1");
					alItens.add(pItens);
    				
					Properties pItens2 = new Properties();
					pItens2.put("NumItem", 2);
					pItens2.put("Local", "Local 2");
					pItens2.put("Defeito", "Defeito 2");
					pItens2.put("Descricao", "Descricao 2");
					alItens.add(pItens2);
    				
    				Properties pItens3 = new Properties();
    				pItens3.put("NumItem", 3);
    				pItens3.put("Local", "Local 3");
    				pItens3.put("Defeito", "Defeito 3");
    				pItens3.put("Descricao", "Descricao 3");
    				alItens.add(pItens3);
					
//    				ItemVO vo = new ItemVO();
//    				vo.setNumItem(new Integer(1));
//    				vo.setLocal("Local 1");
//    				vo.setDefeito("Defeito 1");
//    				vo.setDescricao("Descricao 1");
//    				alItens.add(vo);
//    				
//    				vo = new ItemVO();
//    				vo.setNumItem(new Integer(2));
//    				vo.setLocal("Local 2");
//    				vo.setDefeito("Defeito 2");
//    				vo.setDescricao("Descricao 2");
//    				alItens.add(vo);
//
//    				vo = new ItemVO();
//    				vo.setNumItem(new Integer(3));
//    				vo.setLocal("Local 3");
//    				vo.setDefeito("Defeito 3");
//    				vo.setDescricao("Descricao 3");
//    				alItens.add(vo);

    				JRBeanCollectionDataSource bcdsItens = new JRBeanCollectionDataSource(alItens);
Criado 20 de novembro de 2007
Ultima resposta 19 de jun. de 2008
Respostas 3
Participantes 4