2010-01-07 17 views
5

Implementé JRQueryExecuter y quiero usarlo en un informe. Usando iReport logré registrar y usar el ejecutador.Cómo registrar un QueryExecuterFactory en informes jasper en java

Ahora quiero usarlo en una aplicación Java, pero no encuentro ningún recurso para registrar la fábrica.

pensé que basta con tener la aplicación en la ruta de clases, pero me da la siguiente excepción:

Caused by: net.sf.jasperreports.engine.JRException: No query executer factory class registered for tmql queries. 
at net.sf.jasperreports.engine.query.DefaultQueryExecuterFactoryBundle.getQueryExecuterFactory(DefaultQueryExecuterFactoryBundle.java:80) 
at net.sf.jasperreports.engine.util.JRQueryExecuterUtils.getQueryExecuterFactory(JRQueryExecuterUtils.java:57) 
at net.sf.jasperreports.engine.design.JRDesignDataset.queryLanguageChanged(JRDesignDataset.java:1006) 

Puede alguien dar una pista?

respecto Hannes

Respuesta

1

La documentación sugiere establecer una propiedad:

JasperReport jasperReport = <...> 
jasperReport.setProperty(JRQueryExecuterFactory.QUERY_EXECUTER_FACTORY_PREFIX + "<query language>", "<value>"); 

funciona eso?

3

Uso jasperreports 5.2.0, es necesario:

  1. Crea una alfombrilla de YourCustomExecuterFactoryQueryExecuterFactory implementación de clase.
  2. Haga su nueva YourCustomExecuterFactory utilizar su costumbre JRQueryExecuter método de implementación QueryExecuterFactory.createQueryExecuter(..)
  3. , asignar la nueva lengua (TMQL?) A su fábrica personalizado. En su jasperresports.properties establezca esta propiedad: net.sf.jasperreports.query.executer.factory.tmql=your.package.YourCustomExecuterFactory

Espero que esto ayude a alguien.

1

Establezca la propiedad antes de llamar a JasperCompileManager.

Ejemplo a continuación, utilizando el lenguaje de consulta plsql:

JRProperties.setProperty(QueryExecuterFactory.QUERY_EXECUTER_FACTORY_PREFIX+"plsql" 
          ,"com.jaspersoft.jrx.query.PlSqlQueryExecuterFactory"); 
JasperReport jasperReport = 
      JasperCompileManager.compileReport(sourceFile); 
Cuestiones relacionadas