Un manejador de informes de EGL suministra bloques de código a los que el motor de JasperReports puede acceder durante la ejecución. Nombres de función predefinidos asocian algunos de estos bloques de código con eventos que se producen cuando JasperReports confecciona un informe. Tales eventos pueden incluir el inicio o el final de una página, de un elemento de línea o del propio informe. Puede llamar directamente a otras funciones personalizadas desde el código fuente del archivo de diseño XML.
El asistente Nuevo manejador de informes de EGL le proporcionará una lista de nombres de función que corresponden a eventos de confección de informe. JasperReports invocará "beforePageInit()", por ejemplo, antes de entrar en una página. Es responsabilidad del usuario crear el código para estas funciones.
Estos ejemplos apenas alcanzan a indicar las complejidades posibles de un manejador de informes. Para more, consulte la documentación de JasperReports.
handler handlerName type jasperReport // Declaraciones Use use usePartReference; // Declaraciones de constante const constantName constantType = literal; // Declaraciones de datos identifierName declarationType; // Funciones de llamada de retorno Jasper function beforeReportInit() end function afterReportInit() end function beforePageInit() end function afterPageInit() end function beforeColumnInit() end function afterColumnInit() end function beforeGroupInit(stringVariable string) end function afterGroupInit(stringVariable string) end function beforeDetailEval() end function afterDetailEval() end end
handler my_report_handler type jasperReport // Declaraciones de datos report_title String; // Función de llamada de retorno Jasper function beforeReportInit() report_title = getReportParameter("TítuloInforme"); end end
handler my_report_handler type jasperReport // Declaraciones de datos item_count int; // Función de llamada de retorno Jasper function beforeDetailEval() item_count = getReportVariableValue("itemCount"); end function afterDetailEval() setReportVariableValue("itemCount", (item_count + 1)); end endRecuerde que los tipos de variables del manejador de informes deben coincidir con los del archivo fuente XML.
handler my_report_handler type jasperReport // Declaraciones de datos employee_first_name String; // Función de llamada de retorno Jasper function beforeColumnInit() employee_first_name = getFieldValue("fName"); end end
handler my_report_handler type jasperReport // Declaraciones de datos customer_array customerRecordType[]; c customerRecordType; // Función de llamada de retorno Jasper function beforeReportInit() customer ReportData; //crear el objeto ReportData para el subinforme Customer c.customer_num = getFieldValue("c_customer_num"); c.fname = getFieldValue("c_fname"); c.lname = getFieldValue("c_lname"); c.company = getFieldValue("c_company"); c.address1 = getFieldValue("c_address1"); c.address2 = getFieldValue("c_address2"); c.city = getFieldValue("c_city"); c.state = getFieldValue("c_state"); c.zipcode = getFieldValue("c_zipcode"); c.phone = getFieldValue("c_phone"); customer_array.appendElement(c); customer.data = customer_array; addReportData(customer, "saveCustomer"); end end
<jasperReport name="MasterReport" ... scriptletClass="subreports.my_report_handler"> ... <subreport> <dataSourceExpression> <![CDATA[(JRDataSource)(((subreports.SubReportHandler) $P{REPORT_SCRIPTLET}).getReportData( new String("saveCustomer")))]]>; </dataSourceExpression> <subreportExpression class="java.lang.String"> <![CDATA["C:/RAD/workspaces/customer_subreport.jasper"]]>; </subreportExpression> </subreport> ... </jasperReport>
handler my_report_handler type jasperReport function hello () returns (String) return("Hello, world!"); end end
<jasperReport name="MasterReport" ... scriptletClass="my_package.my_report_handler"> ... <summary> <band height="40"> <textField> <reportElement positionType="Float" x="0" y="20" width="500" height="15"/> <textElement textAlignment="Center"> <font reportFont="Arial_Bold" size="10"/> </textElement> <textFieldExpression class="java.lang.String"> <![CDATA[((my_package.my_report_handler)$P{REPORT_SCRIPTLET}).hello()]]> </textFieldExpression> </textField> </band> </summary> ... </jasperReport>
La frase "Hello, world!" se imprimirá al final del informe.
Conceptos relacionados
Visión general del proceso de creación de informes de EGL
Visión general de los informes de EGL
Tareas relacionadas
Crear un archivo fuente EGL
Utilizar plantillas de informe
Consulta relacionada
Funciones adicionales del manejador de informes de EGL
Biblioteca ReportLib de EGL
Manejador de informes de EGL
Funciones predefinidas del manejador de informes de EGL