2012-05-25 21 views
9

Tek bir parametre alan basit bir rapor oluşturdum. Bu parametre sorguda kullanılır ve rapor tasarımcısında doğrudan yürütüldüğünde para cezası uygular. Bu arada javascript veya bu rapor için herhangi bir komut dosyası kullanmıyorum. Burada cevaplar için komut dosyaları ve/veya javascript'leri kullanarak parametreleri geçirmeye çalışan bazı insanlar gördüm, ancak bu benim yaptığım şey değil. Tüm parametrelerimi java'ya aktarıyorum. Devam ediyor, bu raporda aktif/aktif olmayan öğeleri listeliyorum. Etkin olmayan öğeler için 'N' ve aktif öğeler için 'Y' geçiyorum. API aracılığıyla bir parametreyi iletmeye çalıştığımda, ne geçtiğime bakılmaksızın her zaman etkin öğelerin bir listesini alırım. Bu arada, "Y", girilen parametrenin varsayılan değeridir. (Buradaki varsayılanları geçersiz kılıyorum. Aşağıdaki kod) Sorun şu ki, rapor ayarladığım parametreyi almak istemiyor. Evet, değişkendeki değer değişiklikleri iletildi, ancak rapor değişikliği yansıtmıyor. Kodum aşağıda. Bu bağlantının önerisini ve parametreleri nasıl ayarlamayı denedim.BIRT Rapor Tasarımcısı tarafından BIRT API'sı tarafından oluşturulan BIRT raporu için bir parametreyi nasıl ayarlayıp geçirirsiniz?

http://www.eclipsezone.com/eclipse/forums/t67723.html

Bağlantıya giderseniz 4. inmek ve yapılacak görevler listesine bakın. Takip etmeye çalıştığım şey buydu. Bir şeyleri kaçırıyor olabileceğimi hissediyorum. Eğer bu işe devam edersen, kaybettiklerime biraz tavsiyede bulunabilir misin? Çok teşekkürler!

-Dale

public class ReportGenerator { 
     public static void main(String args[]) throws Exception{ 
     ReportGenerator rg = new ReportGenerator(); 
     rg.executeReport("N"); 
     } 


     @SuppressWarnings({ "unchecked", "deprecation" }) 
     public void executeReport(String activeIndicator) throws EngineException { 

     IReportEngine engine=null; 
     EngineConfig config = null; 

     try{ 
      config = new EngineConfig();    
      config.setBIRTHome("C:\\birt-rcp-report-designer-3_7_2\\ReportEngine"); 
      config.setLogConfig("c:/temp/test", Level.FINEST); 
      Platform.startup(config); 
      IReportEngineFactory factory = (IReportEngineFactory) Platform.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY); 
      engine = factory.createReportEngine(config);   


      IReportRunnable reportDesign = null; 
      reportDesign = engine.openReportDesign("C:\\workspace\\SimpleReport\\ReportTemplates\\ItemListingReport.rptdesign"); 
      IRunAndRenderTask task = engine.createRunAndRenderTask(reportDesign); 
      IGetParameterDefinitionTask parameterDefinitionTask = engine.createGetParameterDefinitionTask(reportDesign); 
      parameterDefinitionTask.evaluateDefaults(); 
      HashMap<String, String> params = parameterDefinitionTask.getDefaultValues(); 
      params.put("aIndicator", activeIndicator); 
      parameterDefinitionTask.setParameterValues(params); 

      ConnectionHelper connectionHelper = new ConnectionHelper(); 
      task.getAppContext().put("OdaJDBCDriverPassInConnection", connectionHelper.getConnection()); 

      PDFRenderOption options = new PDFRenderOption(); 
      options.setOutputFormat("pdf"); 
      options.setOutputFileName("C:\\workspace\\SimpleReport\\output\\itemListingReport.pdf"); 

      task.setRenderOption(options); 

      task.run(); 
      task.close(); 
      engine.destroy(); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } finally { 
      Platform.shutdown(); 
     } 
     } 
    } 

cevap

11

Sen IRunAndRenderTask üzerinde parametrelerini ayarlamak gerekir:

IRunAndRenderTask task = 
    engine.createRunAndRenderTask(reportRunnable); 
Map< String, Object > birtParams = ...; 
task.setParameterValues(birtParams); 
+0

(BIRT 4 öncesi) bir önceki versiyonunda, yapmam gereken tüm yeni EngineConfig() idi. setAppContext (birtParams). –

İlgili konular