06.08.2015, 10:59 | #1 |
Участник
|
Сортировка 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 |
Участник
|
в первом случае ошибка потому что используется одна и та же переменная для разных датасорсов
а вообще поменяйте запрос таким образом, чтобы датасорс InventDim шел первым
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет. |
|
06.08.2015, 11:26 | #3 |
Участник
|
не могу. по InventTable еще сортировка должна быть и самой первейшей
|
|
06.08.2015, 11:30 | #4 |
Участник
|
В AX2012 у метода addSortField есть третий параметр arrayIndex https://msdn.microsoft.com/en-us/lib...sortfield.aspx. Может он именно за это отвечает?
Решение этой задачи не для Query, а для Select Полные предложения ORDER BY и GROUP BY |
|
06.08.2015, 11:32 | #5 |
Участник
|
Если писать запрос через select то такое можно провернуть - перед именем поля с сортировкой поставить имя таблички.
Значит, в случае кверей тоже должен быть способ. |
|
06.08.2015, 11:55 | #6 |
Участник
|
С помощью addSortField такого поведения вроде не добьешься. В 2012 для произвольной сортировки можно использовать addOrderByField, который в этом плане работает корректно. Если версия не 2012, и без query никак, наверное стоит создать View и использовать его.
|
|
|
За это сообщение автора поблагодарили: NeveB (1), Logger (3), Start (1). |