|
05.06.2006, 12:26 | #1 |
Программатор
|
Я может чего не понимаю, но в чём проблема??? С выводем в Excel или с группировкой? Или и с тем, и с другим? Используйте group by или order by наконец
для группировки Что Вы имеете в виду под словом "группировка"? Я не смогу например вам помоч, не зная почему у вас не выходит группировка. С уважением - Sada... |
|
05.06.2006, 12:35 | #2 |
Участник
|
Давайте просто перейдем уже к более конкретным полям, запросам, таблицам.
И я обычно сначала группирую, а потом эти данные заполняю во временную таблицу. Иначе, какой из нее толк? Обычно делается цикл по всем строкам нужным, и добавляются переменные, в которые суммируются необходимые группировки, и записываются и обнуляются при изменении поля, по которому группировка. Тогда у нас сразу во временной таблице готовые данные получаются, и их тупо надо вывести в Эксель. |
|
05.06.2006, 12:48 | #3 |
Участник
|
Цитата:
Сообщение от kashperuk
Давайте просто перейдем уже к более конкретным полям, запросам, таблицам.
И я обычно сначала группирую, а потом эти данные заполняю во временную таблицу. Иначе, какой из нее толк? Обычно делается цикл по всем строкам нужным, и добавляются переменные, в которые суммируются необходимые группировки, и записываются и обнуляются при изменении поля, по которому группировка. Тогда у нас сразу во временной таблице готовые данные получаются, и их тупо надо вывести в Эксель. q=new Query(); qr=new QueryRun(q); qbds=qr.query().addDataSource(tablenum(InventTable)); qr.query().dataSourceTable(tablenum(InventTable)).relations(false); q1=new Query(); qr1=new QueryRun(q1); qbds1=qr1.query().addDataSource(tablenum(InventSum)); qbds1.addSortField(fieldnum(InventSum,InventDimId)); qbds1.addSortField(fieldnum(InventSum,LastUpdDatePhysical)); qbds1.orderMode(OrderMode::GroupBy); qbds1.addSelectionField(fieldnum(InventSum,LastUpdDatePhysical),SelectionField::Max); qbds1.addSelectionField(fieldnum(InventSum,InventDimId),SelectionField:atabase); qbds1.addSelectionField(fieldnum(InventSum,ItemId),SelectionField:atabase); qbds1.addSelectionField(fieldnum(InventSum,PostedQty),SelectionField::Sum); qbds1.addSelectionField(fieldnum(InventSum,Received),SelectionField::Sum); qbds1.addSelectionField(fieldnum(InventSum,Deducted),SelectionField::Sum); qbds1.addSelectionField(fieldnum(InventSum,Picked),SelectionField::Sum); qbds1.addSelectionField(fieldnum(InventSum,Registered),SelectionField::Sum); qbds1.addSelectionField(fieldnum(InventSum,PostedValue),SelectionField::Sum); qbds1.addRange(fieldnum(InventSum, ItemId)); qbds1.addRange(fieldnum(InventSum,LastUpdDatePhysical)).value(".."+Fdate.valueStr()); qr1.query().dataSourceTable(tablenum(InventSum)).addDataSource(tablenum(InventDim)); qr1.query().dataSourceTable(tablenum(InventDim)).joinMode(joinMODE::InnerJoin); qr1.query().dataSourceTable(tablenum(InventDim)).addLink(fieldnum(InventDim,InventDimId),fieldnum(InventSum,InventDimId)); qr.query().dataSourceNo(1).clearRanges(); if (TMC.valueStr()!='') qr.query().dataSourceNo(1).addRange(fieldnum(InventTable,ItemId)).value(TMC.valueStr()); if (GroupTMC.valueStr()!='') qr.query().dataSourceNo(1).addRange(fieldnum(InventTable,ItemGroupId)).value(GroupTMC.valueStr()); qr.init(); //запрос по таблицам InventSum и InventTable while (qr.next()) { it = qr.get(tablenum(InventTable)); qr1.query().dataSourceNo(2).clearRanges(); qr1.query().dataSourceNo(1).FindRange(fieldnum(InventSum, ItemId)).value(it.ItemId); //накладываем основные ограничения-фильтры для 2-го запроса (по склад. аналитикам) if (Sklad.valueStr()!='') qr1.query().dataSourceNo(2).addRange(fieldnum(InventDim,InventLocationId)).value(Sklad.valueStr()); if (MOL.valueStr()!='') qr1.query().dataSourceNo(2).addRange(fieldnum(InventDim,InventMOLId)).value(MOL.valueStr()); if (Batch.valueStr()!='') qr1.query().dataSourceNo(2).addRange(fieldnum(InventDim,InventBatchId)).value(Batch.valueStr()); //выполняем 2-ой запрос по складским аналитикам qr1.init(); While (qr1.next()) { .......... } в данном случае тут 2 запроса, один по InventTable, результаты которого передаются во 2-ой запрос в качестве ограничения по таблице InventSum |
|
|
За это сообщение автора поблагодарили: raniel (1). |
05.06.2006, 12:43 | #4 |
Участник
|
Цитата:
Сообщение от Sada
Я может чего не понимаю, но в чём проблема??? С выводем в Excel или с группировкой? Или и с тем, и с другим? Используйте group by или order by наконец
для группировки Что Вы имеете в виду под словом "группировка"? Я не смогу например вам помоч, не зная почему у вас не выходит группировка. С уважением - Sada... делаю фильтрацию по группе номенклатуры (выбираю какую нить группу), указываю что данные в отчете должны быть сгруппированы например по складу, так вот в результате запроса данные выдаются без группировки (в запросе учитывается только указанные фильтры) я их поочередно загоняю в таблицу, в результате имеем таблицу со всеми ТМЦ из указанной номенклатурной группы. теперь эти данные надо сгруппировать по складу и выдать в ексель!!! |
|