我有一个Maximo的BIRT报告和两个脚本数据集。采购申请的主要数据集和采购申请行的子数据集。问题是子数据集适用于单个购买请求,并为任何给定PR打印正确的数据,但如果您为多个PR运行报表,则会为每个PR打印第一个PR的pr行。BIRT数据集为每个项目打印相同的数据
所以我得到的是这样的。
PR 10
行1
行2
PR 20
行1
2行
当PR 20应该有10条线,它仅给了我两个,这两个和PR 10一样。我设定了该报告通过填充名为mySQL的全局变量并将其打印在报告上来打印出由数据集创建的SQL。 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);
您是否尝试通过属性 - >数据集 - >高级 - >需要数据引擎缓存= false来禁用数据集缓存? – SiMemon 2014-09-02 05:49:47
我无法找到属性SiMemon。我在BIRT 3.7.1上我的版本上有这个属性吗? – user3393181 2014-09-03 13:25:59
你是对的,它在BIRT 3.7.1中不可用。你为什么不升级到更新的版本? – SiMemon 2014-09-04 05:28:30