Не работает ORDER BY

создал сервис SelectQuery, на поле с типом дата/время установил сортировку по убыванию (DESC), в предпросмотре ORDER BY отображается, при выполнении запроса сортировка отсутствует. в чем может быть проблема?
сервис прилагаю.
версия 3.0.2.244

Нравится

10 комментариев

делал еще вот так:

var SelectChat = GetSelectQueryPrimarySelect(ChatDataset.SelectQuery);
var CaptionColumn = SelectChat.Columns.ItemsByAlias('CreatedDateRecord');
CaptionColumn.OrderType = otDesc;
CaptionColumn.OrderPosition = 1;

не помогло...

Здравствуйте:

протестировал на Вашем сервисе, на Ваших бинарниках (3.0.2.244).

1. Для CreatedOn установите позицию сортировки 0. Сортировка - не используется.
1
2. Для нужного поля позиция сортировки - 1, по убыванию.
2
3. В предосмотре имеем:

3

в предпросмотре сортируется правильно, ибо ORDER BY в нем присутствует, а вот когда просматриваю профайлером запрос, который выполняется на сервере, то там ORDER BY почему то отсутствует...

Уточните пожалуйста, к чему привязан Dataset который заполняется данным Select Query? И каким образом он открывается? Если Вы реализовывали какую либо дополнительную логику в коде, предоставьте пожалуйста данный код.
Спасибо.

да вроде ничего особенного, датасет привязан к DatasetLink:

var ChatDataset = DatasetLink.Dataset;
ChatDataset.Close();
ApplyDatasetFilter(ChatDataset, 'ParentTreatmentID', dlData.Dataset.Values('ID'), true);
ApplyDatasetFilter(ChatDataset, 'TypeChat', TypeChat, true); 
ChatDataset.Open();

Здравствуйте.

Проверьте, пожалуйста, отладчиком какой SQLText в SelectQuery (ChatDataset.SelectQuery.SQLText) датасета после строки:

var ChatDataset = DatasetLink.Dataset;

а моя система не знает такого свойства... может в моей версии его нет?

Да, проверил - действительно такого свойства нету.
Проверил на Вашей версии для другого sq - ситуация воспроизводится. Т.е в предосмотре сортируется верно, в реестре - сортировки нету.

Предлагаю использовать встроенный механизм сортировки - для этого кликните по названию колонки, и данные по данной колонке будут отсортированы. Дополнительный клик - данные будут отсортированы в обратную сторону. Клик с зажатой кнопкой Ctrl - отмена сортировки.
Сортировка по нескольким колонкам - клик с зажатой кнопкой Shift.

Обратите внимание, что параметры сортировки при этом будут сохранены и при последующих входах в систему для данного реестра записей.

нехорошо... смысл как раз в том, что пользователь должен сразу видеть вверху самые поздние записи... неужели никак нельзя заставить сортировать автоматически при открытии датасета?

Здравствуйте!
Можно. Просто вытяните в реестр колонку с датой, по которой нужно будет сортировать данные, и установите по ней сортировку по убыванию. Теперь при открытии датасета (т.е. перехода в раздел, где этот реестр записей будет "активным") новые записи всегда будут сверху.

По поводу ошибки сортировки в запросе selectquery для датасета реестра записей - информацию я передам в департамент разработки для анализа.

Показать все комментарии