Cambiar un report a report + subreport en Jasper

Inicio Foros Foro principal Discusión General Cambiar un report a report + subreport en Jasper

  • Este debate está vacío.
Viendo 7 entradas - de la 1 a la 7 (de un total de 7)
  • Autor
    Entradas
  • #32140
    Marcos Tonina
    Miembro

    Hola amigos, quería consultarles lo siguiente: ¿Puedo modificar un reporte que es simple (puntualmente la factura que se le da al cliente) y convertirlo en un reporte con subreporte? El problema lo tengo en que necesito sí o si un subreporte para agregarle cierta funcionalidad. Lo hice y en el iReport corre bárbaro, lo que no se si se puede hacer es indicarle a libertya dónde buscar ese subreporte, y dónde ubicarlo. No se si soy claro, pero mi duda es cómo referenciarlo desde el reporte padre y cómo almacenarlo en libertya. Por lo que sé el almacenamiento interno es en una tabla.

    Gracias

    Marcos

    #36762

    Hola Marcos,

    En Libertya puedes tener reportes con subreportes; Un subreporte es en sí un reporte, entonces el primer paso para que Libertya lo pueda encontrar es referenciarlo desde la ventana Jasper Report como se hace normalmente. Para referenciarlo desde el código te doy un ejemplo:

    En iReport se crea un reporte (maestro) que contendrá a otro reporte (subreporte) y luego de crearlos los subo a Libertya desde Jasper Report; para ejemplificar un caso típico, el subreporte va a mostrar los datos de un datasource. Desde el reporte maestro agrego el subreporte y edito sus propiedades:

    [attachment=290]subreporte_propiedades1.png[/attachment]

    [attachment=291]subreporte_propiedades2.png[/attachment]

    Hay que notar que SubreporteDS y SubreporteCompilado son parámetros del reporte maestro, entonces en el código se haría algo así para referenciarlos:

    Code:
    // Subreporte es el nombre que le di al reporte en Libertya desde Jasper Report
    MJasperReport subreporte = getJasperReport(“Subreporte”);
    // Se pasa el subreporte compilado como parámetro del maestro. maestro es de tipo MJasperReport
    maestro.addParameter(“SubreporteCompilado”, new byteArrayInputStream(subreporte.getBinaryData()));
    // Se pasa el datasource (para el subreporte) como parámetro del maestro.
    maestro.addParameter(“SubreporteDS”, ds);

    La conclusión es que los subreportes se pasan como parámetros del reporte maestro; esta es una forma de hacerlo, quizás no sea la única.

    Espero que pueda servirte y que puedas armar tu reporte; cualquier duda que tengas avisame.

    Saludos,
    friss.

    #36765
    Marcos Tonina
    Miembro

    Entiendo… excelente. Ahora, algo que no pregunté es si se puede hacer sin necesidad de recompilar la aplicación, es decir: sin pasarle desde la app el parámetro… No se me ocurre cómo, pero con preguntar no pierdo nada… Gracias!!

    #36766

    Claro Marcos, vas a tener por lo menos que recompilar la clase que controla el informe, y luego modificar el OXP.jar con la .class generada. Calculo que haciendo solamente eso tiene que andar.

    Saludos,
    friss.

    #36767

    Un comentario. Hasta el momento nosotros no lo hemos probado, pero según el ChangeLog de la versión LY1110 se amplió el soporte para Jasper Reports a fin de permitir la incorporación de este tipo de informes sin la necesidad de codificar clases adicionales para su rellenado. Los mismos pueden ser almacenados en metadatos o bien ser referenciados externamente.

    #36769
    Marcos Tonina
    Miembro

    Hola amigos, refloto el hilo porque he intentado de muchas formas pero no he podido terminar esto. Lo que necesito es poder pasarle un subreporte a rpt_FactA… mi problema con recompilar la clase es que primero: no logré encontrar la clase que llama a ese reporte, y segundo, no comprendo del todo si se puede recompilar sólo esa clase, y dónde debo colocarla.

    Gracias

    Marcos

    #36954
    Matías Nerón Cap
    Superadministrador

    Estimado,

    La clase se denomina LaunchInvoice y al recompilarla quizás sería mejor que recompiles todo el proyecto entero, desde utils_dev/Compilar.sh (o .bat). Otra de las formas para agregar ese .class es meterlo en un jar y agregarlo en /ServidorOXP/lib/plugins. En el jar debería estar agregado la ruta entera al class (con los directorios). Las clases compiladas generalmente se almacenan en tools/lib/local de los fuentes de Libertya.

    Saludos
    Matías Cap

Viendo 7 entradas - de la 1 a la 7 (de un total de 7)
  • Debes estar registrado para responder a este debate.