01.12.2005, 11:23 | #1 |
Участник
|
Проблема с составлением Query
Создаю query:
Код: PurchLine purchLine; InventTable inventTable; InventDim inventDim; QueryBuildDataSource qbdsPurchTable, qbdsPurchLine, qbdsInventTable, qbdsInventTableModule, qbdsInventDim; Query query; QueryRun queryRun; ; query = new Query(); qbdsPurchTable = query.addDataSource(tableNum(PurchTable)); qbdsPurchTable.addRange(fieldNum(PurchTable, DeliveryDate)).value(queryValue(30\11\2005)); qbdsPurchLine = qbdsPurchTable.addDataSource(tableNum(PurchLine)); qbdsPurchLine.joinMode(JoinMode::InnerJoin); qbdsPurchLine.fetchMode(QueryFetchMode::One2One); qbdsPurchLine.addLink(fieldNum(PurchTable, PurchId), fieldNum(PurchLine, PurchId)); qbdsPurchLine.orderMode(OrderMode::GroupBy); qbdsPurchLine.addSelectionField(fieldNum(PurchLine, PurchQty), SelectionField::Sum); qbdsInventTable = qbdsPurchLine.addDataSource(tableNum(InventTable)); qbdsInventTable.joinMode(JoinMode::InnerJoin); qbdsInventTable.fetchMode(QueryFetchMode::One2One); qbdsInventTable.addLink(fieldNum(PurchLine, ItemId), fieldNum(InventTable, ItemId)); qbdsInventTable.orderMode(OrderMode::GroupBy); qbdsInventTable.addSortField(fieldNum(InventTable, ItemName)); qbdsInventTable.addSortField(fieldNum(InventTable, ItemId)); qbdsInventTableModule = qbdsInventTable.addDataSource(tableNum(inventTableModule)); qbdsInventTableModule.joinMode(JoinMode::InnerJoin); qbdsInventTableModule.fetchMode(QueryFetchMode::One2One); qbdsInventTableModule.addLink(fieldNum(InventTable, ItemId), fieldNum(inventTableModule, ItemId)); qbdsInventDim = qbdsPurchLine.addDataSource(tableNum(InventDim)); qbdsInventDim.joinMode(JoinMode::InnerJoin); qbdsInventDim.fetchMode(QueryFetchMode::One2One); qbdsInventDim.addLink(fieldNum(PurchLine, InventDimId), fieldNum(InventDim, InventDimId)); qbdsInventDim.orderMode(OrderMode::GroupBy); qbdsInventDim.addSortField(fieldNum(InventDim, InventDimId)); queryRun = new QueryRun(query); while(queryRun.next()) { purchLine = queryRun.get(tableNum(PurchLine)); inventTable = queryRun.get(tableNum(InventTable)); inventDim = queryRun.get(tableNum(InventDim)); info(strfmt("%1 ~ %2 ~ %3 ~ %4", inventTable.ItemName, inventTable.ItemId, purchLine.PurchQty, inventDim.inventDimId )); } |
|