2012-05-25 4 views
9

Ich habe einen einfachen Bericht erstellt, der einen einzelnen Parameter benötigt. Dieser Parameter wird in der Abfrage verwendet und wird ordnungsgemäß ausgeführt, wenn er direkt im Berichts-Designer ausgeführt wird. Übrigens benutze ich für diesen Bericht kein JavaScript oder Scripting. Ich habe einige Leute gesehen, die versucht haben, Parameter mit Hilfe von Skripten und/oder Javascripts als Antwort zu übergeben, aber das ist nicht das, was ich mache. Ich übergebe alle meine Parameter durch Java. In diesem Bericht listet ich aktive/inaktive Elemente auf. Ich gebe ein 'N' ein, um inaktive Artikel aufzulisten, und ein 'Y' für aktive Artikel. Wenn ich versuche, einen Parameter über die API zu übergeben, erhalte ich immer eine Liste aktiver Elemente, unabhängig davon, was ich übergebe. Übrigens ist 'Y' der Standardwert des übergebenen Parameters. (Ich überschreibe die Standardwerte in der Code unten) Das Problem, das ich habe, ist, dass der Bericht nicht scheinen will, den Parameter zu nehmen, den ich einstelle. Ja, der Wert ändert sich in meiner übergebenen Variable, aber der Bericht spiegelt die Änderung nicht wider. Mein Code ist unten. Ich habe versucht, dem Ratschlag dieses Links zu folgen und die Parameter einzustellen.Wie legen Sie einen Parameter fest und übergeben ihn an einen BIRT-Bericht, der vom BIRT Report Designer über die BIRT-API erstellt wurde?

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

Wenn Sie auf den Link gehen bis # 4 nach unten gehen und die Liste der Aufgaben sehen zu tun. Dies habe ich versucht zu folgen. Ich fühle, dass ich etwas vermisse. Wenn du das hast, könntest du mir einen Rat geben, was ich vermisse? Vielen Dank!

-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(); 
     } 
     } 
    } 

Antwort

11

Sie müssen die Parameter auf der IRunAndRenderTask einzustellen:

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

In einer früheren Version (vor BIRT 4), alles, was ich tun musste, war neu EngineConfig(). setAppContext (birtParams). –

Verwandte Themen