[RESOLVIDO] passa collection para subrelatório di ireport com conexao jdbc

pessoa estou tentando gerar um relatorio onde contem 2 subRelatórios.

Estou tentando passa-los como parametros, porem nao estou conseguindo… ja andei olhando os topicos aqui do forum e na net, porem nenhum deles conseguiu me auxiliar… :cry:

estou usando o ireport 3.7.5

O relatorio vem todo em branco quando passo a Connection, porem se eu passar o um JRBeanCollectionDataSource ele gera os dados que estao no relatorio master, e gera algumas paginas em branco… que eu acredito que ele esteja iterando a lista que eu passo no construtor, mas o dados que era pra aparecer do sub, esta tudo branco.

desde ja agradeço a todos

segue codigo abaixo.

            	ServletContext application = request.getSession().getServletContext();
	       
		Connection conn = Conexao.getConnectionFromPool();
		    
		PreparedStatement pstmt = null;
		ResultSet rs = null;

		JasperPrint jp = null;
		
		try {

			InputStream is = application.getResourceAsStream("RelatorioMaster.jasper");
			JasperReport jr = (JasperReport) JRLoader.loadObject(is);
			is.close();
			
			String reportPath = application.getRealPath("/WEB-INF/resources/ireport/");
			reportPath += System.getProperty("file.separator");

			pstmt = conn.prepareStatement(sql);

			rs = pstmt.executeQuery();
			
			List minhaLista = new ArrayList();

			while(rs.next()){
				//aqui eu seto o resultado da pesquisa na minha lista			
			}
			
			Map<Object, Object> parametros = new HashMap<Object, Object>();
			
			parametros.put("COLECAO", minhaLista);
			parametros.put("SUBREPORT_DIR", reportPath);
			parametros.put("REPORT_CONNECTION", conn);
			
			jp = JasperFillManager.fillReport(jr,parametros, conn);
			
			rs.close();
			pstmt.close();
		
		} catch (Exception e) {
			Util.closeConnection(conn);
			throw new ServletException(e);
		}

		Util.closeConnection(conn);

		response.setContentType("application/pdf");
		OutputStream osResponse = response.getOutputStream();

		JasperExportManager.exportReportToPdfStream(jp, osResponse);

		response.flushBuffer();

no relatorio principal, tu recebe as listas que irão para os subs?

como tu estas enviando a lista para o sub?

Curiosidade…
no caso você vai iterar a colection ao invés de um resultset??

FernandoCartaxo => Sim, eu quero iterar a lista, pois o resultado dela eh uma serie de querys… que nao da pra fazer em apenas um select

Sim, eu passo a lista para o relatorio master…

Map<Object, Object> parametros = new HashMap<Object, Object>();  
parametros.put("COLECAO", minhaLista);

no relatorio master eu tenho um parametro “COLECAO” do tipo List
nas propriedades do subRelatorio eu passo esse parametro

Sim, o parâmetro de jasper é qualquer objeto…

a curiosidade é como você itera essa sua collection dentro do jasper, como se fosse um resultset.

E como que eu faria essa iteração ?

Pessoal, a unica forma que eu consegui resolver foi criando um CustomDatasource.

http://ireport.sourceforge.net/cap4.html