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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.01.2011, 20:44   #4  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Небольшое замечание. Если вдруг в лукапе потом захочется вывести поля, к которым нужно применить агрегатную функцию (Sum, Count и т.д.), то можно столкнуться с неприятным моментом, когда пропадает группировка.
Связано это с тем, что в рамках оптимизации исполнения запроса выбираются не все поля, а только те, что определены в лукапе (для которых был вызван метод addLookupField).
Соответственно, выполняется следующий код (\Classes\SysTableLookup\buildSelectionList):
X++:
        for (i = 1; i <= conlen(lookupItems); i++)
        {
            [fieldId, returnItem, method] = conpeek(lookupItems, i);
            queryBuildDataSource.addSelectionField(fieldId);
        }
И тут, как несложно заметить - метод addSelectionField вызывается без агрегатных функций. Соответственно, все наши Sum-ы пропадают и по этим полям начинает работать группировка (т.е. фактически, она слетает).

Лечится это простым условием:
X++:
    if (queryBuildDataSource.orderMode() == OrderMode::OrderBy) // Ограничение числа полей актуально только для выборки без группировок    
    {
        for (i = 1; i <= conlen(lookupItems); i++)
        {
            [fieldId, returnItem, method] = conpeek(lookupItems, i);
            queryBuildDataSource.addSelectionField(fieldId);
        }
    }
после чего суммирование начинает работать нормально.

Справедливо для всех версий (3.0 - 2009 RU5)
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 29.01.2011 в 12:37.
За это сообщение автора поблагодарили: konopello (1), jonny (3), IKA (1), player (1).
Теги
group by, lookup, order by, query

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Группировка по полю GUID sukhanchik DAX: Программирование 6 21.12.2010 14:43
Группировка сводной таблицы Excel AlexeyVS DAX: Программирование 4 29.07.2010 12:13
Группировка в Lookup maze DAX: Программирование 6 18.11.2009 17:08
Группировка временной таблицы Андрей К. DAX: Программирование 3 20.01.2009 08:45
Группировка в отчетах Pegiy DAX: Программирование 14 22.10.2004 10:44

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

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

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