2012-05-25 19 views
9

He creado un informe simple que toma un solo parámetro. Este parámetro se usa en la consulta y se ejecuta correctamente cuando se ejecuta directamente en el diseñador de informes. Por cierto, no estoy usando javascript ni ningún script para este informe. He visto a algunas personas tratando de pasar parámetros usando scripts y/o javascripts para obtener respuestas aquí, sin embargo, esto no es lo que estoy haciendo. Paso todos mis parámetros a través de java. Continuando, en este informe estoy enumerando elementos activos/inactivos. Paso una 'N' para enumerar elementos inactivos y una 'Y' para elementos activos. Cuando trato de pasar un parámetro a través de la API, siempre obtengo una lista de elementos activos independientemente de lo que paso. Por cierto, 'Y' es el valor predeterminado del parámetro pasado. (Estoy anulando los valores predeterminados en el código a continuación) El problema que estoy teniendo es que el informe no parece querer tomar el parámetro que establecí. Sí, el valor cambia en mi variable, pero el informe no refleja el cambio. Mi código está abajo. Intenté seguir el consejo de este enlace y cómo configurar los parámetros.¿Cómo configura y pasa un parámetro a un informe BIRT creado por el Diseñador de informes BIRT a través de la API BIRT?

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

Si vas al enlace de bajar a # 4 y ve la lista de tareas a realizar. Esto es lo que he tratado de seguir. Siento que me estoy perdiendo algo. Si tienes esto en marcha, ¿podrías darme algún consejo sobre lo que me estoy perdiendo? ¡Muchas gracias!

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

Respuesta

11

Es necesario configurar los parámetros de la IRunAndRenderTask:

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

En una versión anterior (antes de BIRT 4), todo lo que tenía que hacer era nueva EngineConfig(). setAppContext (birtParams). –

Cuestiones relacionadas