Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > Sub reportes con hibernate

Buenas comunidad, les comento que tengo un problema que no pude solucionarlo, estuve buscando en la documentación de foro, y no encuentro algo que me pueda ayudar, estoy haciendo una aplicación de escritorio, con hibernate, y cuando hago los reportes paso parámetros y en vez de la conexión le paso una lista en forma de JRBeanCollectionDataSource, y no tengo problema, pero cuando quiero hacer un sub Reporte, y por lo ejemplos que vi, lo hago con una consulta en sql a la base de datos, donde recibo un parámetro, que al generar el sub reporte esta emparejado con uno de los parámetros del reporte maestro, configure el DataSource y haciendo un preview del sub reporte en ireport 5.0 que utilizo, no me da problemas, se ejecuta correctamente y muestra los resultados, pero cuando ejecuto el reporte maestro directamente no se ve nada.

Hurgando en las propiedades del sub reporte encontré una que dice "When No Data" y le puse "All Sections, No Detail" y así me mostró las partes fijas del sub reporte en el reporte maestro.

A lo que llego a la conclusión de que tengo un problema pasando el parámetro, porque evidentemente no realiza la consulta;
O con la conexión, ya que al configurar el sub reporte le puse que sea la misma que usa el reporte maestro, el problema, creo yo, es que al maestro no le paso ninguna conexión en particular, solamente una lista de objetos que los convierte en field, es decir el reporte maestro con realiza ninguna consulta a la base de datos.

Ahora mi consulta es, ¿Como soluciono esto? ¿El problema es la forma que le paso los datos al reporte maestro? este es mi código para ejecutar el reporte:

List listaDestino=destinoDao.destinoXcircular(circulares);
List Listatem= new ArrayList();
System.out.println(listaDestino);

JRBeanCollectionDataSource jrbDestino= new JRBeanCollectionDataSource(listaDestino);
JasperReport reporteCircular=(JasperReport)JRLoader.loadObject("reportCircularesInterna.jasper");
Map<String, Object> parametros=new HashMap<String, Object>();

parametros.put("procedencia", procedencia);
parametros.put("de", de);
parametros.put("numero",Integer.parseInt( pantallaCircular.getTxtNroregistro().getText().toString()));
parametros.put("instruccionEspecifica", instEspecifica);
parametros.put("fecha",txFecha );
parametros.put("referencia", referencia);

JasperPrint jasperPrint=JasperFillManager.fillReport(reporteCircular,parametros, jrbDestino);


JasperViewer vista=new JasperViewer(jasperPrint, false);

vista.setTitle("Circular Interna");
vista.setVisible(true);
JasperExportManager.exportReportToXml(jasperPrint);

¿Hay alguna forma de hacer sub reportes usando la tecnología de hibernate? Osea sin que el reporte haga la consulta, que se le manden los datos directamente.

Les agradezco de antemano la atención, estaré atento a sus respuestas, un abrazo.

PD: Ya probé poniendo que no le pase ninguna conexión, y nada, poniendo la variable en la propiedad "print when expression" en el detail del sub reporte, y nada, y finalmente borrando todo y volviendo hacer.

enero 7, 2014 | Registered Commenteradrian

Bueno les comento que ya lo soluciones, por fin!!!!! y era la conexión, resulta que cuando haces un sub reporte tienes que pasarle alguna cadena de conexión, no basta con configurar el dataset en el ireport, entonces, cuando no le mandas una conexión a tu reporte maestro, tienes que pasarle una conexión si o si al sub reporte y yo no le pasaba nada al mio, así que busque la forma de pasarle otra conexión, y gracias a esta pagina:

http://monillo007.blogspot.com/2012/05/ireport-tip-subreporte-con-una-conexion.html

Pude pasarle una conexión diferente y ahora sale todo!!
Espero que la info les sirva a todos, suerte!

enero 7, 2014 | Registered Commenteradrian