powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / параметры для отчетов birt ПРОГРАММНО - в report engine api
9 сообщений из 9, страница 1 из 1
параметры для отчетов birt ПРОГРАММНО - в report engine api
    #33742934
nonsense_name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пойму, как программно передавать готовому файлу отчетов параметры.
В webapp параметр creator передается как
Код: plaintext
http://localhost: 8080 /birt-viewer/run?__report=Report\ 202 .rptdesign&creator=ivanov
,
а запрос в dataset выглядит, как
Код: plaintext
select * from table_name where user_name=?
То ись ? и есть передаваемый параметр. А программно как? В теле нижеследующего метода?
Кто-нить использовал классы \birt-runtime-2_0_1\Report Engine,
как это указано в http://]http://www.eclipse.org/birt/phoenix/deploy/reportEngineAPI.php
, чтоб программно генерить по готовому sample_report.rptdesign файлы отчетов HTML,PDF..

Собсно, код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
 static   void  executeReport(String report_design,String out_file)  throws  EngineException
	{
		//Engine Configuration - set and get temp dir, BIRT home, Servlet context
		String engine_home="C:/birt-runtime-2_0_1/Report Engine";
		EngineConfig config =  new  EngineConfig();
		config.setEngineHome(engine_home);

		//Create the report engine
		ReportEngine engine =  null ;
		 try  {
			engine =  new  ReportEngine(config);
		}  catch  (RuntimeException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		//Open a report design - use design to modify design, retrieve embedded images etc.
		IReportRunnable design = engine.openReportDesign(report_design);
 
		design.
		
		
		//Create task to run the report - use the task to execute and run the report,
		IRunAndRenderTask task = engine.createRunAndRenderTask(design);

		IDataPreviewTask task1 = engine.createDataPreviewTask(design); 	
		
		//Set Render context to handle url and image locataions
		HTMLRenderContext renderContext =  new  HTMLRenderContext();
		renderContext.setImageDirectory("image");
		HashMap contextMap =  new  HashMap();
		contextMap.put( EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, renderContext );
		task.setAppContext( contextMap );

		//Set rendering options - such as file or stream output,
		//output format, whether it is embeddable, etc
		HTMLRenderOption options =  new  HTMLRenderOption();

//		options.setOutputStream(System.out);
		options.setOutputFileName(out_file);
		options.setOutputFormat("html");
		task.setRenderOption(options);

		//run the report and destroy the engine
		 try  {
			task.run();
		}  catch  (EngineException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		engine.destroy();
	}
прекрасно пашет, и даже создает out_file по переданному report_design. Проблема в том, что я не знаю, как обрабатывать параметры программно, если они есть, т.е. внутри этого метода...............................
...
Рейтинг: 0 / 0
параметры для отчетов birt ПРОГРАММНО - в report engine api
    #33748143
may_be
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
такая же проблема - как программно задать условие по которому будут выбираться данные.
...
Рейтинг: 0 / 0
параметры для отчетов birt ПРОГРАММНО - в report engine api
    #33750720
may_be
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в результате сделали немного по другому:

при создании формы отчета просто объявляется Report Parameter.
потом при выборе значений пишешь условия, с учетом параметров.
затем значение параметра передаётся на страницу при вызове отчета.
...
Рейтинг: 0 / 0
параметры для отчетов birt ПРОГРАММНО - в report engine api
    #33753303
nonsense_name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я тебя понял, то вы объявили параметры в .rtpdesign, и передаете их при вызове отчета из вебаппа.. Так вопрос-то был - как это сделать программно, т.е. в классе, не используя tomcat/webapp/birt-viewer, а используя ReportEngineAPI.
...
Рейтинг: 0 / 0
параметры для отчетов birt ПРОГРАММНО - в report engine api
    #33763550
may_be
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот тут про то как программно их передавать

но через параметры Data Set - у меня ничего не получилось.

получилось когда объявляешь параметр в Report Parameter в .rtpdesign, пишешь для Data Set скрипт(для beforeOpen()), в котором вместо "?" пишешь params["имя параметра"].
потом в коде в Map заносишь пару - "имя параметра - значение" в метод setParameterValues() для объекта класса IRunAndRenderTask передаёim этот Map и всё выбирается как надо.:)
...
Рейтинг: 0 / 0
параметры для отчетов birt ПРОГРАММНО - в report engine api
    #33763667
N/A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
N/A
Гость
У меня это выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
...
ReportEngine engine =  null ;
...
engine =  new  ReportEngine(config);
IRunAndRenderTask task = engine.createRunAndRenderTask(report);
...
task.setParameterValue(paramName, textValue);
...
task.run();
...
engine.destroy();

Это то, что Вы просили?
...
Рейтинг: 0 / 0
параметры для отчетов birt ПРОГРАММНО - в report engine api
    #34064838
nonsense_name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо огромное :) возможно, это поможет
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
параметры для отчетов birt ПРОГРАММНО - в report engine api
    #37662285
nonsense_name,
Что должно лежать в "C:/birt-runtime-2_0_1/Report Engine";


У меня выдает ошибку
descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.NoClassDefFoundError: org/eclipse/core/runtime/CoreException

На engine = new ReportEngine(config);
Использую birt-runtime-3_7_1

Причем в самый первый раз, файлик создался нормально, после этого начало отшибать.
Что не так?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
параметры для отчетов birt ПРОГРАММНО - в report engine api
    #38841826
barsuk2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня так работает
в процедуру передаю массивы названий и типов полей и параметров

void buildDataSet( ArrayList< String > cols, ArrayList< String > typecols, ElementFactory designFactory, ReportDesignHandle designHandle, String qry, String[] paramname, String[] paramvalues, String[] paramtype ) throws SemanticException {

OdaDataSetHandle dsHandle = designFactory.newOdaDataSet( "ds",
"org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet" );
dsHandle.setDataSource( "Data Source" );
// String par = "156";
if ( !(paramname == null))
{
for( int i=0; i < paramname.length; i++)
{
OdaDataSetParameter odaDataSetParameter=StructureFactory.createOdaDataSetParameter();
odaDataSetParameter.setName("param" + String.valueOf(i));

//Linked to report parameter
//odaDataSetParameter.setParamName("link to report");

if (paramtype[i].equals("Дата"))
{
odaDataSetParameter.setDataType("date");
odaDataSetParameter.setNativeDataType(93);
}
else if (paramtype[i].equals("Число"))
{
odaDataSetParameter.setDataType("integer");
odaDataSetParameter.setNativeDataType(4);
}
else
{
odaDataSetParameter.setDataType("string");
}
//odaDataSetParameter.setDataType("date"); //DesignChoiceConstants.PARAM_TYPE_INTEGER "date-time"
//odaDataSetParameter.setNativeDataType(93);
odaDataSetParameter.setPosition(i+1);
odaDataSetParameter.setIsOptional(true);
odaDataSetParameter.setAllowNull(false);
odaDataSetParameter.setIsInput(true);
//odaDataSetParameter.setExpressionProperty("DefaultValue",ExpressionType.CONSTANT);
if (paramtype[i].equals("Число")) // || paramtype[i].equals("Текст")
{
odaDataSetParameter.setDefaultValue(paramvalues[i]);
}
else
{
odaDataSetParameter.setDefaultValue("\""+ paramvalues[i] +"\""); //par paramvalues[i]
}


PropertyHandle odaDataSetParameterProp = dsHandle.getPropertyHandle(OdaDataSetHandle.PARAMETERS_PROP);
odaDataSetParameterProp.addItem(odaDataSetParameter);
}

// String qry = "Select first 100 id, firmid, mark from drink where id = ?";
for( int i=0; i < paramname.length; i++)
{
qry = qry.replace(":" + paramname[i], "?");
}
}
dsHandle.setQueryText( qry );

for( int i=0; i < cols.size(); i++)
{
ColumnHint resultHint = new ColumnHint();
resultHint.setProperty(ColumnHint.COLUMN_NAME_MEMBER, "NAMEFIELD"+(String)cols.get(i));
resultHint.setProperty("alias", "NAMEFIELD"+(String)cols.get(i));
dsHandle.getPropertyHandle(OdaDataSetHandle.COLUMN_HINTS_PROP).addItem(resultHint);
OdaResultSetColumn column = StructureFactory.createOdaResultSetColumn( );
column.setPosition(i+1);
column.setNativeName( "NAMEFIELD"+(String)cols.get(i) );
column.setColumnName( "NAMEFIELD"+(String)cols.get(i) );

if (typecols.get(i).equals("Дата"))
{
column.setDataType("date");
//odaDataSetParameter.setNativeDataType(93);
}
else if (typecols.get(i).equals("Число"))
{
column.setDataType("float");
// odaDataSetParameter.setNativeDataType(4);
}
else
{
column.setDataType("string");
}
OdaResultSetColumnHandle columnHandle = (OdaResultSetColumnHandle)dsHandle.getPropertyHandle( OdaDataSetHandle.RESULT_SET_PROP ).addItem(column );

//CellHandle cell = (CellHandle) tabledetail.getCells( ).get( i );
//DataItemHandle data = designFactory.newDataItem( "data_"+(String)cols.get(i) );
//data.setResultSetColumn( (String)cols.get(i));
//cell.getContent( ).add( data );
//cell.setStyleName("CellHeader");
}

//dsHandle.paramBindingsIterator().

designHandle.getDataSets( ).add( dsHandle );



}

}
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / параметры для отчетов birt ПРОГРАММНО - в report engine api
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]