Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Birt передача данных в отчет


Автор: Veroonya 22.6.2012, 10:14
Требуется передать в отчет список данных для dataSet

запускаю отчет из java-приложения

Код

public File generateToFile(TargetFormat format, AccountInfo ai, HashMap<OptionsReportEnum, String> enumReportParamsValue, ServletContext sc) throws Exception {
    File outFile = AccountInfo.generateRndFileName(repFolder, this.getClass().getSimpleName(), format.getFileExt());
    
    IReportEngine engine = null;
    EngineConfig config;
    IReportRunnable design = null;
    try {
      config = new EngineConfig();
      config.setEngineHome("D:/ReportEngine");

      Platform.startup(config);
      IReportEngineFactory factory = (IReportEngineFactory)      Platform.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
      engine = factory.createReportEngine(config);
      design = engine.openReportDesign("...");
    }
    catch (Exception e) {
      System.err.println("An error occured during the opening of the report file!");
      e.printStackTrace();
      System.exit(-1);
    }

    
    EXCELRenderOption options = new EXCELRenderOption();
    //Тут выставляем всякие опции

    task.setRenderOption(options);


    //Cross our fingers and hope everything is set
    try {

      //выставляем параметры для задачи
      setTask(task);
      //Запускаем задачу
      task.run();
    }
    catch (Exception e) {
      System.err.println("An error occured while running the report!");
      e.printStackTrace();
      System.exit(-1);
    }

    engine.destroy();
    return outFile;  
  }




Пробовала делать стандартным методом, описанным в мануалах, то есть в шаблоне задавать скрипт (это пример на действие open у dataSet):

Код

import (Packages.....)
gettingData = new ClassName();
myrows = gettingData.getRows();
itr = myrows.iterator();



НО! В классе ClassName() при выполнении метода getRows() мне требуются данные, которые можно взять ТОЛЬКО из выполняемого приложения (статичесике данные от класса-родителя),а при создании экземпляра класса в шаблоне эти данные не создаются.
Могу ли я каким либо образом передать в отчет готовый список данных (таблицу), наподобие как я передаю параметры, которую будет использовать dataSet? 

Автор: priam220 22.6.2012, 13:42
Можно прояснить что значит "(статичесике данные от класса-родителя),а при создании экземпляра класса в шаблоне эти данные не создаются"?

Автор: Veroonya 25.6.2012, 05:05
Это значит, что при создании класса из приложения там уже имеются некие данные (которые идут от объекта класса-родителя). А при создании класса в шаблоне, несмотря на то что шаблон запускается из приложения эти данные пустые, то есть шаблон не знает, что создан объект класса-родителя. Общий смысл этого высказывания в том, что нужно передавать данные именно из приложения, а не формировать их в шаблоне, как это указано в мануалах.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)