2010-01-07 9 views
5

Zaimplementowałem JRQueryExecuter i chcę go użyć w raporcie. Za pomocą iReport udało mi się zarejestrować i używać executera.Jak zarejestrować QueryExecuterFactory w raportach Jaspera w java

Teraz chcę go używać w aplikacji java, ale nie mogę znaleźć żadnych zasobów, jak zarejestrować fabrykę.

myślałem, że wystarczy mieć wdrożenie w ścieżce klas, ale otrzymuję następujący wyjątek:

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) 

Czy ktoś może mi dać wskazówkę?

pozdrowienia Hannes

Odpowiedz

1

Dokumentacja sugeruje, aby ustawić właściwość:

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

to działa?

3

Korzystanie JasperReports 5.2.0, trzeba:

  1. Tworzenie niestandardowego YourCustomExecuterFactory wykonawczych QueryExecuterFactory klasę.
  2. Dodać nowy YourCustomExecuterFactory użyć niestandardowego JRQueryExecuter wykonawczych metoda QueryExecuterFactory.createQueryExecuter(..)
  3. mapie nowego języka (tmql?) Do niestandardowego fabryce. W swojej jasperresports.properties ustaw tę właściwość: net.sf.jasperreports.query.executer.factory.tmql=your.package.YourCustomExecuterFactory

Mam nadzieję, że to pomoże komuś.

1

Ustaw właściwość przed wywołaniem JasperCompileManager.

Poniższy przykład za pomocą języka zapytań plsql:

JRProperties.setProperty(QueryExecuterFactory.QUERY_EXECUTER_FACTORY_PREFIX+"plsql" 
          ,"com.jaspersoft.jrx.query.PlSqlQueryExecuterFactory"); 
JasperReport jasperReport = 
      JasperCompileManager.compileReport(sourceFile); 
Powiązane problemy