2010-01-07 4 views
5

J'ai implémenté JRQueryExecuter et je souhaite l'utiliser dans un rapport. En utilisant iReport j'ai réussi à enregistrer et utiliser l'exécuteur.Comment enregistrer une QueryExecuterFactory dans les rapports jasper dans java

Maintenant, je veux l'utiliser dans une application Java, mais je ne trouve aucune ressource pour enregistrer l'usine.

Je pensais que c'est assez pour avoir la mise en œuvre dans le classpath, mais je reçois l'exception suivante:

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) 

Quelqu'un peut-il me donner un indice?

Hannes ce qui a trait

Répondre

1

La documentation suggère de définir une propriété:

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

Est-ce que le travail?

3

Utilisation JasperReports 5.2.0, vous devez:

  1. Créer une coutume YourCustomExecuterFactory mise en œuvre QueryExecuterFactory classe.
  2. Faites votre nouvelle à votre usine personnalisée YourCustomExecuterFactory utiliser votre commande JRQueryExecuter méthode d'implémentation QueryExecuterFactory.createQueryExecuter(..)
  3. Map la nouvelle langue (tmql?). Dans votre jasperresports.properties définir cette propriété: net.sf.jasperreports.query.executer.factory.tmql=your.package.YourCustomExecuterFactory

Espérons que cela aide à quelqu'un.

1

Définissez la propriété avant d'appeler JasperCompileManager.

Exemple ci-dessous en utilisant le langage de requête plsql:

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