У меня есть отчет BIRT для Maximo с двумя наборами сценариев. Основной набор данных для запросов на покупку и набор данных для строк запроса на покупку. Проблема в том, что набор поддисков работает нормально для одного запроса на покупку и печатает правильные данные для любого PR, но если вы запускаете отчет для нескольких PR, для каждого PR печатаются строки pr для первого PR.Набор данных BIRT печатает одинаковые данные для каждого элемента
Так что я получаю что-то вроде этого.
PR 10
Линия 1
Линия 2
PR 20
Линия 1
Линия 2
Когда PR 20 должен иметь 10 строк, это только дает мне два, а те два - те же строки, что и PR 10. Я установил отчет для распечатки SQL, который создается набором данных, путем заполнения глобальной переменной mySQL и печати в отчете. SQL выглядит отлично, и я могу вырезать и вставить его в свой редактор SQL и получить правильные результаты, но это не то, что распечатывается в отчете. Я проверил привязки таблиц, я попытался исключить набор данных в скрипте и заставить его повторно заселять, но это не влияет. Я создал новый набор данных, но новый набор данных делает то же самое.
Кто-нибудь сталкивался с этим раньше? Любые идеи вообще о том, что проверить? Или как я могу разобраться в наборе данных для каждого PR, чтобы набор данных PRLINE был чистым для каждого PR?
Это открытый сценарий для набора данных.
lineDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), this.getName());
lineDataSet.open();
var sqlText = new String();
// Add query to sqlText variable.
sqlText = "select orderqty, orderunit, itemnum, description, unitcost, linecost, prnum, prlinenum, refwo, assetnum, location, project,tasknum, siteid from maximo.prline_vw "
+ " where prnum = '" + rows[0]["prnum"].replace(/'/g,"''") + "'"
+ " and siteid = '" + rows[0]["siteid"] + "'"
//+ " where prnum = '" + row._outer["prnum"] + "'"
//+ " and siteid = '" + row._outer["siteid"] + "'"
// Include the Maximo where clause
//+ " and " + params["where"]
;
lineDataSet.setQuery(sqlText);
mySQL = sqlText;
И это сценарий выборки.
if (!lineDataSet.fetch())
return (false);
// Add a line for each output column
// The specific get method should match the data type of the output column.
row["prlinenum"] = lineDataSet.getString("prlinenum");
row["orderqty"] = lineDataSet.getFloat("orderqty");
row["orderunit"] = lineDataSet.getString("orderunit");
row["unitcost"] = lineDataSet.getFloat("unitcost");
row["linecost"] = lineDataSet.getFloat("linecost");
row["prnum"] = lineDataSet.getString("prnum");
row["itemnum"] = lineDataSet.getString("itemnum");
row["refwo"] = lineDataSet.getString("refwo");
row["siteid"] = lineDataSet.getString("siteid");
row["description"] = lineDataSet.getString("description");
row["project"] = lineDataSet.getString("project");
row["tasknum"] = lineDataSet.getString("tasknum");
row["assetnum"] = lineDataSet.getString("assetnum");
row["location"] = lineDataSet.getString("location");
return (true);
Вы пытались отключить кеш для набора данных через Properties-> Dataset-> Advanced-> Нужный кеш для data-engine = false? – SiMemon
Я не могу найти эту недвижимость SiMemon. Я на BIRT 3.7.1 Является ли это свойство доступным для моей версии? – user3393181
Вы правы, он недоступен в BIRT 3.7.1. Почему бы вам не перейти на более новую версию? – SiMemon