AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
NAV
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.06.2006, 12:48   #10  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от 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).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Excel, группировки: как программно изменить расположение итоговых данных? CDan DAX: Программирование 5 29.08.2008 18:14
Невозможно выполнить команду языка определения данных в () iHomer13 DAX: Программирование 8 18.07.2008 10:56
Источники данных в отчетах Valia DAX: Программирование 1 24.07.2003 05:10
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:15.