【发布时间】:2014-09-04 04:36:38
【问题描述】:
我有一个包含两个脚本数据集的 Maximo BIRT 报告。采购申请的主数据集和采购申请行的子数据集。问题是子数据集对于单个购买请求工作正常,并为任何给定的 PR 打印正确的数据,但是如果您为多个 PR 运行报告,则为每个 PR 打印出第一个 PR 的 pr 行。
所以我得到的是这样的。
公关 10
第 1 行
第 2 行
公关 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->Needs cache for data-engine = false 为 Dataset 禁用缓存?
-
我找不到那个属性 SiMemon。我使用的是 BIRT 3.7.1 该属性在我的版本中可用吗?
-
你是对的,它在 BIRT 3.7.1 中不可用。为什么不升级到新版本?
-
这些报告适用于 Maximo 7.5,因此在 IBM 升级 Maximo 中使用的 BIRT 之前,我一直停留在我们使用的版本上。
-
好吧..我不知道那些东西
标签: birt