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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.08.2015, 10:59   #1  
Start is offline
Start
Участник
 
39 / 9 (1) +
Регистрация: 21.07.2015
Адрес: Москва
Сортировка Query
Если надо отсортировать запрос сначала по полям третей таблицы в датасорсе, а потом только второй, то как это сделать?

1. qbdsInvent = query.addDataSource(tablenum(InventTable));

qbds = qbdsInvent.addDataSource(tablenum(InventHistoryChange));
qbds.relations(true);
qbds.fetchMode(QueryFetchMode::One2One);

qbds = qbds.addDataSource(tablenum(InventDim));
qbds.relations(true);
qbds.fetchMode(QueryFetchMode::One2One);

qbdsInvent.addSortField(fieldNum(InventTable,ItemId));
qbds.addSortField(fieldNum(InventDim,InventSiteId));
qbds.addSortField(fieldNum(InventHistoryChange, InventChangeDat));

"неправильное поле сортировки"

2. qbdsInvent = query.addDataSource(tablenum(InventTable));

qbds = qbdsInvent.addDataSource(tablenum(InventHistoryChange));
qbds.relations(true);
qbds.fetchMode(QueryFetchMode::One2One);

qbdsInventDim = qbds.addDataSource(tablenum(InventDim));
qbdsInventDim.relations(true);
qbdsInventDim.fetchMode(QueryFetchMode::One2One);

qbdsInvent.addSortField(fieldNum(InventTable,ItemId));
qbdsInventDim.addSortField(fieldNum(InventDim,InventSiteId));
qbds.addSortField(fieldNum(InventHistoryChange, InventChangeDat));

а так сортирует сначала по fieldNum(InventHistoryChange, InventChangeDat вместо желаемого fieldNum(InventDim,InventSiteId) сначала и fieldNum(InventHistoryChange, InventChangeDat) потом.
Старый 06.08.2015, 11:18   #2  
Weez is offline
Weez
Участник
Axapta Retail User
 
250 / 84 (3) ++++
Регистрация: 18.01.2006
Адрес: Moscow city
в первом случае ошибка потому что используется одна и та же переменная для разных датасорсов
а вообще поменяйте запрос таким образом, чтобы датасорс InventDim шел первым
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет.
Старый 06.08.2015, 11:26   #3  
Start is offline
Start
Участник
 
39 / 9 (1) +
Регистрация: 21.07.2015
Адрес: Москва
не могу. по InventTable еще сортировка должна быть и самой первейшей
Старый 06.08.2015, 11:30   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
В AX2012 у метода addSortField есть третий параметр arrayIndex https://msdn.microsoft.com/en-us/lib...sortfield.aspx. Может он именно за это отвечает?

Решение этой задачи не для Query, а для Select Полные предложения ORDER BY и GROUP BY
Старый 06.08.2015, 11:32   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Если писать запрос через select то такое можно провернуть - перед именем поля с сортировкой поставить имя таблички.
Значит, в случае кверей тоже должен быть способ.
Старый 06.08.2015, 11:55   #6  
makbeth is offline
makbeth
Участник
Аватар для makbeth
КОРУС Консалтинг
 
43 / 52 (2) ++++
Регистрация: 15.05.2007
Адрес: Санкт-Петербург
С помощью addSortField такого поведения вроде не добьешься. В 2012 для произвольной сортировки можно использовать addOrderByField, который в этом плане работает корректно. Если версия не 2012, и без query никак, наверное стоит создать View и использовать его.
За это сообщение автора поблагодарили: NeveB (1), Logger (3), Start (1).
Теги
order by, query, сортировка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Microsoft Dynamics AX general performance analysis scripts page 5 Blog bot DAX Blogs 0 01.09.2014 14:11
Сортировка в Query Serj187 DAX: Программирование 7 17.07.2012 11:05
Сортировка в Query в отчете Zlojbarsuk DAX: Программирование 7 27.03.2010 00:18
Сортировка в Query!!! Zlojbarsuk DAX: Программирование 5 08.07.2008 19:02

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:58.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.