2011-09-14 9 views
12

Uso de iReport v4.0.1 con Jasperserver v4.1.0 Estoy intentando encontrar una sintaxis para vincular subinformes al informe principal que me permite probarlo en iReport y luego implementarlo en el servidor a través del navegador de repositorio.Vinculación de subinformes en iReport para que también funcionen en el servidor de Jasper

La sintaxis predeterminada para sub-informes en iReport para la expresión subinforme es algo así como

$P{SUBREPORT_DIR} + "mySubReport.jasper" 

Al implementar esto desde iReport es lo suficientemente inteligente como para recoger esto y sugerir cambiar a

"repo:mySubReport.jrxml" 

y luego implementar todos los subinformes en la carpeta Recursos del informe principal.

Eso es genial, pero lamentablemente edita el archivo en iReport para guardar este cambio, lo que significa que ya no puede ejecutar el informe en iReport sin volver a editar manualmente todas las expresiones del subinforme; esto hace que el proceso de prueba y la implementación en el servidor es realmente dolorosa, especialmente cuando hay múltiples subinformes en un informe.

Pensé que al menos podría establecer el valor de $ P {SUBREPORT} como "repo:" o "Mi \ local \ filepath" para que al menos solo tuviera un lugar para cambiarlo, pero el al compilador no le gusta eso.

¿Hay una estructura alternativa o una expresión que resuelva a repo: *. Jrxml o My \ local \ filepath * .jasper correctamente dependiendo de dónde está ejecutando el informe?

Respuesta

13

La mejor solución para esto es agregar un parámetro adicional como $P{IsOnServer}. Establezca el valor predeterminado en true. Para su expresión subinforme utilizar este:

$P{IsOnServer} ? "repo:mySubReport.jrxml" : "/local/path/to/mySubReport.jasper" 

Cuando se ejecuta el informe en iReport, se le pedirá para el valor de IsOnServer. Hazlo falso la expresión del informe integrado se resolverá en su archivo local. En el servidor, no defina un control de entrada. A los usuarios nunca se les pedirá ese parámetro (ni siquiera sabrán que existe), y dará como resultado la sintaxis 'repo' deseada.

Por supuesto, una mejor solución sería que iReport maneje esto automáticamente ... pero por ahora debe hacer algo como esto.

+1

Gracias por aumentar la solicitud de funciones. Otros pueden votar aquí: http://jasperforge.org/projects/ireport/tracker/view.php?id=5539 – KCD

+0

mdahlman, ¿podría ser más específico? P.ej. ¿Funciona la secuencia de comandos que proporciona dentro de la parte CDATA, o fuera? ¿podría proporcionar un ejemplo de línea más completa? –

+0

Cuando uso esto, obtengo excepciones de Modificación concurrente cuando intento convertir el informe en el estudio. La única solución es establecer manualmente el valor predeterminado de pareamter en false/true antes/después de implementarlo en el servidor. –

Cuestiones relacionadas