nested tables
Hi everyone<br />
<br />
I have 6 table within one main table, the first 5 nested table can refrence 2 sets of attributes to populate there table with data via the ? place holder<br />
<br />
Please see Code <br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
//Main Dataset
maximoDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), this.getName());
maximoDataSet.open();
var sqlText = new String();
// Add query to sqlText variable.
sqlText = " select workorder.workorderid, workorder.woclass, workorder.wonum, workorder.description as wodesc, workorder.siteid, workorder.schedstart, "
+ " workorder.schedfinish, workorder.status, workorder.targstartdate, workorder.targcompdate, workorder.parent, "
+ " workorder.actstart, workorder.actfinish, workorder.worktype, workorder.reportdate, workorder.reportedby, workorder.wopriority, "
+ " workorder.glaccount, workorder.vendor, workorder.contract, workorder.classstructureid, workorder.failurecode, workorder.problemcode, "
+ " workorder.lead, workorder.supervisor, workorder.persongroup, workorder.owner, workorder.ownergroup, "
+ " workorder.commodity, workorder.commoditygroup, workorder.onbehalfof, "
+ " workorder.jpnum, workorder.assetnum, workorder.location, workorder.istask, workorder.orgid, workorder.cinum, jobplan.description as jpdesc, "
+ " asset.description as assetdesc, locations.description as locdesc, ci.description as cidesc, "
//tranportation specific fields START
+ " asset.status as assetstatus, asset.plustyear, asset.manufacturer, asset.plustmodel, asset.assettype, workorder.plustwarrpresent, "
+ " workorder.plustcomp, workorder.plustpos, workorder.plustreason, workorder.plustaccomp, workorder.plustfailure "
//tranportation specific fields END
+ "from workorder left outer join "
+ " wmassignment on "
+ " workorder.siteid=wmassignment.siteid "
+ " and workorder.wonum=wmassignment.wonum "
+ " and workorder.taskid=wmassignment.taskid left outer join "
+ " jobplan on "
+ " ( "
+ " (workorder.orgid=jobplan.orgid and workorder.siteid=jobplan.siteid) "
+ " or (workorder.orgid=jobplan.orgid and jobplan.siteid is null) "
+ " or (jobplan.orgid is null and jobplan.siteid is null) "
+ " ) "
+ " and workorder.jpnum=jobplan.jpnum left outer join "
+ " asset on "
+ " workorder.siteid=asset.siteid "
+ " and workorder.assetnum=asset.assetnum left outer join "
+ " locations on "
+ "workorder.siteid = locations.siteid "
+ " and workorder.location=locations.location left outer join "
+ " wochange on "
+ " workorder.siteid=wochange.siteid "
+ " and workorder.wonum=wochange.wonum left outer join "
+ " worelease on "
+ " workorder.siteid=worelease.siteid "
+ " and workorder.wonum=worelease.wonum left outer join "
+ " woactivity on "
+ " workorder.siteid=woactivity.siteid "
+ " and workorder.wonum=woactivity.wonum left outer join "
+ " ci on "
+ " workorder.cinum=ci.cinum "
// Include the Maximo where clause
//+ " where " + params["where"]
+ " where workorder.wonum = '321402' "
;
maximoDataSet.setQuery(sqlText);
</pre>
<br />
The second dataset refrences the main dataset<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>taskDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), this.getName());
taskDataSet.open();
var sqlText = new String();
// Add query to sqlText variable.
sqlText = "select workorder.taskid, workorder.description, workorder.status, woactivity.pointnum, "
+ " workorder.measurementvalue, workorder.measuredate, workorder.observation, "
//tranportation new fields START
+ " workorder.plustcomp, workorder.plustpos, workorder.plustreason, "
+ " workorder.plustaccomp, workorder.plustfailure, workorder.plusthaswarranty, "
+ " wplabor.craft as wplcraft, wplabor.laborhrs as wplhours, "
+ " wpitem.itemnum AS wpmitemnum, wpitem.description AS wpmdesc, wpitem.itemqty AS wpmqty "
//tranportation new fields END
+ "from workorder left outer join "
//+ "from workorder inner join "
+ " woactivity on "
+ " workorder.siteid=woactivity.siteid "
+ " and workorder.wonum=woactivity.wonum "
+ " LEFT OUTER JOIN wplabor ON workorder.siteid = wplabor.siteid AND workorder.wonum = wplabor.wonum "
+ " LEFT OUTER JOIN wpitem ON wpitem.siteid = wplabor.siteid AND wpitem.wonum = wplabor.wonum "
//+ " inner JOIN wplabor ON workorder.siteid = wplabor.siteid AND workorder.wonum = wplabor.wonum "
//+ " inner JOIN wpitem ON wpitem.siteid = wplabor.siteid AND wpitem.wonum = wplabor.wonum "
+ " where workorder.parent=? "
+ " and workorder.siteid=? "
+ " and workorder.istask=1 "
+ " order by workorder.taskid"
//+ " order by wplhours"
;
taskDataSet.setQuery(sqlText);
taskDataSet.setQueryParameterValue(1, rows[0]["wonum"]);
taskDataSet.setQueryParameterValue(2, rows[0]["siteid"]);
</pre>
<br />
now where it all falls down is if on the 5th dataset, I have a nested table within that dataset, the nested table is suppose to populate it's table from information on the outer table that is groupped by task ID. Now when I try to run the query through the open method. It throws up an error.<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
taskDataSet1 = MXReportDataSetProvider.create(this.getDataSource().getName(), this.getName());
taskDataSet1.open();
var sqlText = new String();
// Add query to sqlText variable.
sqlText = "select workorder.taskid, workorder.description, workorder.status, woactivity.pointnum, "
+ " workorder.measurementvalue, workorder.measuredate, workorder.observation, "
//tranportation new fields START
+ " workorder.plustcomp, workorder.plustpos, workorder.plustreason, "
+ " workorder.plustaccomp, workorder.plustfailure, workorder.plusthaswarranty, "
+ " wplabor.craft as wplcraft, wplabor.laborhrs as wplhours, "
+ " wpitem.itemnum AS wpmitemnum, wpitem.description AS wpmdesc, wpitem.itemqty AS wpmqty "
//tranportation new fields END
+ "from workorder left outer join "
//+ "from workorder inner join "
+ " woactivity on "
+ " workorder.siteid=woactivity.siteid "
+ " and workorder.wonum=woactivity.wonum "
+ " LEFT OUTER JOIN wplabor ON workorder.siteid = wplabor.siteid AND workorder.wonum = wplabor.wonum "
+ " LEFT OUTER JOIN wpitem ON wpitem.siteid = wplabor.siteid AND wpitem.wonum = wplabor.wonum "
//+ " inner JOIN wplabor ON workorder.siteid = wplabor.siteid AND workorder.wonum = wplabor.wonum "
//+ " inner JOIN wpitem ON wpitem.siteid = wplabor.siteid AND wpitem.wonum = wplabor.wonum "
+ " where workorder.parent=? "
+ " and workorder.siteid='NRFAMS' "
+ " and workorder.taskid= " + row._outer["taskid"]
+ " and workorder.istask=1 "
+ " order by workorder.taskid"
//+ " order by wplhours"
;
taskDataSet1.setQuery(sqlText);
taskDataSet1.setQueryParameterValue(1, rows[0]["wonum"]);
//taskDataSet1.setQueryParameterValue(2, row[0]("taskid"));
</pre>
<br />
I know it is the <pre class='_prettyXprint _lang-auto _linenums:0'>row.outer["taskid"]</pre>, but since the outer table is grouped by taskid, I didnt think it would be a problem, or maybe i'm not thinking in a logical way, please can anyone help, and nope I cant upgrade BIRT, because the system it works with wont work with any other version