14.04.2004, 17:48 | #1 |
Участник
|
Сортировка по полям подчиненного Датасурса
Вот возникла проблема. Датасурс1 - главный (скажем, SalesLine) Датасурс2 - подчиненный (скажем, InventDim), связан с SalesLine InnerJoin.
Хочу отсортировать грид, содержащий поля из обоих датасурсов, по полям подчиненного датасурса. Не получается! Ни установкой свойства Index у датасурса (подчиненного), ни применением AddSourceField. Иллюстрация: идем в строки формы SalesTable, заставляем показываться складские аналитики, потом щелкаем по треугольничку у любой из аналитик... не сортируется!!! Так и должно быть, сортировать можно только по полям самого высокого Датасурса-папы? или можно как-то забороть? |
|
15.04.2004, 12:33 | #2 |
Moderator
|
Нет. Вообще говоря, сортировать можно по полям любых связанных по InnerJoin датасорсов. Это можно легко проверить на собственноручно созданной форме. Или, например, на InventTable (встать на поле "Цена" и нажать "Сортировка по возрастанию/убыванию" в контекстном меню). Почему не работает в заказах - поверхностно сравнив формы, так и не понял .
__________________
Андрей. |
|
15.04.2004, 13:08 | #3 |
----------------
|
сортировки родителя
в 2.5 сортировка по дочерним DSам работала только после удаления сортировки в родительском DS. Т.е. если сначала отсортировали по родителю, то про дочерние сортировки можно забыть.
Исправлялось с помощью clearSortIndex на QBDS родителя. |
|
15.04.2004, 19:24 | #4 |
Участник
|
Спасибо ответившим, сегодня сам разобрался...
Действительно, на обычных таблицах сортировка по подчиненному датасурсу работает в лучшем виде. Пример - форма CustInvoiceJournal (у меня, кстати, сортировка по цене в InventTable не работает). Но я забыл упомянуть, что моя таблица - временная Временные таблицы вообще плохо дружат с постоянными - например, не реагируют на их сортировку в том числе и из кода. Запросы while select Tmp join InventDim order by inventBatchId asc where Tmp.InventDimId == InventDim.inventDimId while select Tmp join InventDim order by inventBatchId desc where Tmp.InventDimId == InventDim.inventDimId дают одинаковый порядок строк, а если написать while select InventDim order by inventBatchId desc join Tmp where Tmp.InventDimId == InventDim.inventDimId , то Аксапта (трехзвенка) заорет в том смысле, что нельзя вешать временные таблицы на невременные Так что, придется извращаться - создать во временной таблице все поля, по которым надо сортировать и заполнять их из подчиненной таблицы... |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Сортировка в гриде с двумя DataSource | 15 | |||
FormListControl сортировка | 2 | |||
сортировка | 1 | |||
Не фильтруется форма по полям временной таблицы | 5 | |||
Сортировка по всем столбцам | 0 |
|