我有以下代码在 Req Trans 表上构建查询,以按项目/站点向我显示合并数量;
query = new Query();
dsReqTrans = query.addDataSource(tablenum(ReqTrans));
dsReqTrans.addRange(fieldnum(ReqTrans, ReqPlanId)).value(_reqPlanId);
dsReqTrans.addRange(fieldnum(ReqTrans, RefType)).value(enum2str(_reqRefType));
dsReqTrans.addGroupByField(fieldnum(ReqTrans, ItemId));
dsReqTrans.addSelectionField(fieldnum(ReqTrans, Qty), SelectionField::Sum);
dsInventDim = dsReqTrans.addDataSource(tablenum(InventDim));
dsInventDim.joinMode(JoinMode::InnerJoin);
dsInventDim.relations(false);
dsInventDim.addLink(fieldnum(ReqTrans, CovInventDimId), fieldnum(InventDim, InventDimId));
dsInventDim.addGroupByField(fieldnum(InventDim, InventSizeId));
dsInventDim.addGroupByField(fieldnum(InventDim, InventSiteId));
rangeInventSiteId = dsInventDim.addRange(fieldnum(InventDim, InventSiteId));
rangeInventSiteId.value(_parmSiteId);
这很好用。我按项目/站点得到 qty 列的总和。
但是,如果我还想在 ItemGroupId 上添加一个范围。为此,我需要像这样链接到 InventTable;
dsInventTable = dsReqTrans.addDataSource(tablenum(InventTable));
dsInventTable.joinMode(JoinMode::InnerJoin);
dsInventTable.relations(false);
dsInventTable.addLink(fieldnum(ReqTrans, ItemId), fieldnum(InventTable, ItemId));
dsInventTable.addRange(fieldnum(InventTable, ItemGroupId)).value(_parmItemGroupId);
当我添加此数据源时,指向 InventDim 的链接已断开。我得到仅按项目分组的所有站点的所有项目数量的总和,而不是按项目/站点分组。
为什么会这样?