Вопрос по report, java – Как установить и передать параметр в отчет BIRT, созданный конструктором отчетов BIRT через API BIRT?

9

Я создал простой отчет, который принимает один параметр. Этот параметр используется в запросе и прекрасно работает при непосредственном выполнении в конструкторе отчетов. Кстати, я не использую javascript или какие-либо сценарии для этого отчета. Я видел, как некоторые люди пытались передать параметры с помощью сценариев и / или сценариев JavaScript для ответов, но это не то, что я делаю. Я передаю все свои параметры через Java. Продолжая, в этом отчете я перечисляю активные / неактивные предметы. Я прохожу в "N" для перечисления неактивных предметов и «Y»; для активных предметов. Когда я пытаюсь передать параметр через API, я всегда получаю список активных элементов независимо от того, что я передаю. Между прочим, 'a'; является значением по умолчанию переданного параметра. (Я переопределяю значения по умолчанию в приведенном ниже коде). Проблема, с которой я столкнулся, заключается в том, что отчет, по-видимому, не хочет принимать параметр, который я установил. Да, в моей переменной передано значение, но отчет не отражает это изменение. Мой код ниже. Я пытался последовать совету по этой ссылке и узнать, как установить параметры.

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

Если вы перейдете по ссылке, перейдите к # 4 и увидите список задач, которые нужно выполнить. Это то, что я пытался следовать. Я чувствую, что могу что-то упустить. Если у вас все получилось, не могли бы вы дать мне несколько советов по поводу того, что мне не хватает? Большое спасибо!

-Дол

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

Ваш Ответ

1   ответ
11

Вам необходимо установить параметры в IRunAndRenderTask:

IRunAndRenderTask task =
    engine.createRunAndRenderTask(reportRunnable);
Map< String, Object > birtParams = ...;
task.setParameterValues( birtParams );
Error: User Rate Limit Exceeded

Похожие вопросы