2012-05-25 5 views
9

단일 매개 변수를 사용하는 간단한 보고서를 만들었습니다. 이 매개 변수는 쿼리에서 사용되며 보고서 디자이너에서 직접 실행될 때 잘 실행됩니다. 그런데이 보고서에는 자바 스크립트 나 스크립트를 사용하지 않습니다. 나는 어떤 사람들이 스크립트 나 자바 스크립트를 사용하여 매개 변수를 전달하려고 시도하는 것을 보았습니다. 그러나 이것은 내가하는 일이 아닙니다. 자바를 통해 모든 매개 변수를 전달합니다. 계속해서이 보고서에서 활성/비활성 항목을 나열합니다. 비활성 항목을 나열하려면 'N'을, 활성 항목에는 'Y'를 전달합니다. API를 통해 매개 변수를 전달하려고하면 전달하는 항목에 관계없이 항상 활성 항목의 목록을 가져옵니다. 'Y'는 전달 된 매개 변수의 기본값입니다. (기본값을 재정의합니다. 아래 코드) 내가 가지고있는 문제는 보고서가 내가 설정 한 매개 변수를 갖고 싶어하지 않는 것입니다. 예, 변수에 값이 전달되었지만 보고서에 변경 사항이 반영되지 않았습니다. 내 코드는 아래와 같습니다. 이 링크의 조언과 매개 변수 설정 방법을 따르려고했습니다.BIRT API를 통해 BIRT 보고서 디자이너가 만든 BIRT 보고서에 매개 변수를 설정하고 전달하는 방법은 무엇입니까?

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

이 링크에 가면 # 4에 가서 할 수있는 작업 목록을 참조하십시오. 이것이 내가 따라 가려고 시도한 것입니다. 나는 뭔가를 놓칠지도 모른다라고 느낀다. 이 일이 생기면 내가 놓친 것에 대해 조언 해 줄 수 있니? 감사합니다!

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

답변

11

당신은 IRunAndRenderTask에 매개 변수를 설정해야합니다

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

을 (BIRT 4 전) 이전 버전에서 내가했던 일은, 새로운 EngineConfig()이었다. setAppContext (birtParams)입니다. –

관련 문제