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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.08.2003, 10:42   #1  
Novice is offline
Novice
Участник
 
40 / 10 (1) +
Регистрация: 28.05.2003
:( Group by in query
Всем Привет!

Столкнулся с следущей ситуацией: Есть query в репорте, содержащий в себе три связаные таблицы, я немогу найти способа групировки полей по полю из таблицы содержащейся в query. Полагаю это можно сделать только перекрыв executeSection ?
Как мне достигуть результата наиболее правильным способом?

Подробнее. В query идет связь InventDim и BOMCalcTrans с BOMCalcTable мне надо объединить строки с одинаковым key1 из BOMCalcTrans и сумировать потребление для такой строки.

Может приведете пример репорта где примерно такая задача реализована?

Спасибо!
Старый 28.08.2003, 12:20   #2  
Novice is offline
Novice
Участник
 
40 / 10 (1) +
Регистрация: 28.05.2003
В общем, решение этой задачи состоит в том, что бы подключать к BOMCalcTrans BOMCalcTable, тогда повторений не будет, но всеравно хотелось бы знать есть ли механизмы групировки строк?
Старый 28.08.2003, 12:26   #3  
Novice is offline
Novice
Участник
 
40 / 10 (1) +
Регистрация: 28.05.2003
Я погорячился
Это не решение!

надо реализовать примерно такой запрос
PHP код:
    while select calcTable
        join sum
(consumptionConstant), sum(consumptionVariablefrom calcTrans
            group by key1       
,
                     
key2       ,
                     
inventdimid,
                     
itemid
        join inventDim
            where  calcTable
.PriceCalcId == calcTrans.PriceCalcId
                
&& calctable.ItemId      == calcTrans.ItemId
                
&& calcTable.InventDimId == calcTrans.InventDimId
                
&& calcTable.BOMId       == calcTrans.BOMId
                
&& calcTable.RouteId     == calcTrans.RouteId
                
&& calcTable.InventDimId == inventDim.inventDimId
                
&& calcTrans.CalcType    == itemCalcType::Item
    
{
        
price calcTrans.consumptionVariable calcTrans.consumptionConstant;

    } 
Ниуж то никто не знает как это сделать в query отчета ?
Старый 29.08.2003, 17:29   #4  
Ser is offline
Ser
NavAx
 
99 / 14 (1) ++
Регистрация: 04.03.2002
Адрес: Москва
если использовать подход создания подобных связей с нуля, то типа того:

PHP код:
    Query  query;
    
QueryRun    queryRun;
    
QueryBuildDataSource qbds_table;
    
QueryBuildDataSource qbds_trans;
    
QueryBuildDataSource qbds_dim;

    
BOMCalcTable   calcTable;
    
BOMCalcTrans   calcTrans;
    
InventDim            inventDim;

    
Real   price;
    ;

    
query = new Query();
    
qbds_table query.addDataSource(tableNum(BomCalcTable));
    
qbds_table.orderMode(OrderMode::GROUPBY);
    
qbds_table.addSortField(fieldnum(BomCalcTableitemid));

    
qbds_trans qbds_table.addDataSource(tableNum(BomCalcTrans));
    
qbds_trans.relations(true);   // Включение связей между таблицами (Relations в Table) 
    
qbds_trans.joinMode(JoinMode::INNERJOIN); // Тип связи
    
qbds_trans.fetchMode(0);
    
qbds_trans.orderMode(OrderMode::GROUPBY); // группировка
    
qbds_trans.addSelectionField(fieldnum(BomCalcTransconsumptionConstant), SelectionField::SUM);
    
qbds_trans.addSelectionField(fieldnum(BomCalcTransconsumptionVariable), SelectionField::SUM);
    
qbds_trans.addSortField(fieldnum(BomCalcTranskey1));
    ......
    
qbds_trans.addSortField(fieldnum(BomCalcTransitemid));
    
qbds_trans.addRange(fieldnum(BomCalcTransCalcType)).value(queryValue(itemCalcType::Item));

    
qbds_dimqbds_table.addDataSource(tableNum(inventDim));
    
qbds_dim.relations(true);
    
qbds_dim.joinMode(JoinMode::INNERJOIN); 
    
qbds_dim.fetchMode(0);

    
queryRun = new QueryRun(query);
    while (
queryRun.next())
    {
        
calcTable   queryRun.get(tableNum(BomCalcTable));
        
calcTrans   queryRun.get(tableNum(BomCalcTrans));
        
inventDim  queryRun.get(tableNum(inventDim));
        
price calcTrans.consumptionConstant calcTrans.consumptionVariable;
        ..................
    }


Посмотри классы, например. LedgerBalance*. Там много интересного о Query.

А без программирования никак?
За это сообщение автора поблагодарили: ZornFire (1).
Старый 08.09.2003, 16:02   #5  
Novice is offline
Novice
Участник
 
40 / 10 (1) +
Регистрация: 28.05.2003
Спасибо большое за ответ!
Он меня впечатлил
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axStart: Cannot mix old-style sorting with new-style Group By or Order By on a query. Blog bot DAX Blogs 0 06.11.2008 12:05
palleagermark: Sample union query from AX 2009 Blog bot DAX Blogs 0 11.07.2008 20:05
Inside Dynamics AX 4.0: The Security Framework Blog bot DAX Blogs 0 31.10.2007 11:40
Dynamics AX Geek: Using query() Blog bot DAX Blogs 0 28.10.2006 16:40
Query и exists join с group by Dron AKA andy DAX: Программирование 7 21.07.2004 19:12
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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