|
![]() |
#1 |
Участник
|
вернулся вчера опять к теме, переменил методу executeQuery(). Теперь выглядит вот-так:
X++: public void executeQuery() { Query query = new Query(); QueryRun queryRun; QueryBuildDatasource dsForInventTrans = query.addDataSource(tablenum(InventTrans)); QueryBuildDatasource dsForInventTransPosting = dsForInventTrans.addDataSource(tablenum(InventTransPosting)); QueryBuildRange rangeForItemId = dsForInventTrans.addRange(fieldnum(InventTrans,ItemId)); QueryBuildRange rangeForPeriod = dsForInventTransPosting.addRange(fieldnum(InventTransPosting, TransDate)); ; dsForInventTransPosting.relations(true); dsForInventTransPosting.joinMode(JoinMode::InnerJoin); rangeForItemId.enabled(true); rangeForPeriod.enabled(true); rangeForItemId.value(itemIdFilter); rangeForPeriod.value(SysQuery::range(StartDate, EndDate)); //ItemId dsForInventTrans.addSortField(fieldnum(inventTrans, itemId)); dsForInventTrans.addSelectionField(fieldnum(InventTrans, Qty), SelectionField::Sum); dsForInventTrans.addSelectionField(fieldnum(InventTrans, CostAmountPosted), SelectionField::Sum); dsForInventTrans.orderMode(OrderMode::GroupBy); //Dimension dsForInventTransPosting.addSortField(fieldId2Ext(fieldnum(InventTransPosting, Dimension), 1)); dsForInventTransPosting.addSelectionField(fieldId2Ext(fieldnum(InventTransPosting, Dimension), 1)); dsForInventTransPosting.orderMode(OrderMode::GroupBy); this.query(query); super(); } X++: SELECT SUM(Qty), SUM(CostAmountPosted) FROM InventTrans GROUP BY InventTrans.ItemId ASC WHERE ((ItemId = N'M0003')) JOIN Dimension[1] FROM InventTransPosting GROUP BY InventTransPosting.Dimension[1] ASC WHERE InventTrans.InventTransId = InventTransPosting.InventTransId AND ((TransDate>={ts '2008-10-01 00:00:00.000'} AND TransDate<={ts '2009-10-14 00:00:00.000'})) |
|
![]() |
#2 |
Участник
|
Вопрос снимается!
я перегрузил init() и еxecuteQuery() второрго dataSource. Все работает! |
|