Сортировка на стороне сервера

Модераторы: alexs, Модераторы

Сортировка на стороне сервера

Сообщение RustemNur » 16.03.2011 12:41:15

Как я понял (а понимаю я пока очень мало), RxDBGrid "не готова" для поддержки сортировки на сервере?
Ориентируюсь на опыт работы с EhLib в Дельфи.
По щелчке на заголовке столбца "треугольник" не отрисовывается; отрисовывается только в случае AutoSort=ture, что включает локальную сортировку (?).
Даже если бы он и отрисовывался, Грид не поддерживает (?) многоуровневую сортировку (т.е. "треугольнички с цифирками").
Прочитать состояние маркера сортировки невозможно (?) - в EhLib за это отвечало сложное свойство SortMarkedColumns, а как в RxDBGrid, я не понял.

Развейте, пожалуйста, туман невежества в моей голове.
Как нужно действовать, чтобы:
1. "Прочитать" желания пользователя по сортировке (и сформировать секцию ORDER BY)
2. Показать пользователю, по каким столбцам сейчас отсортирован набор данных

Заранее очень признателен.
RustemNur
новенький
 
Сообщения: 61
Зарегистрирован: 20.02.2011 11:21:14
Откуда: Уфа

Re: Сортировка на стороне сервера

Сообщение alexs » 17.03.2011 00:25:40

RustemNur писал(а):Как я понял (а понимаю я пока очень мало), RxDBGrid "не готова" для поддержки сортировки на сервере?
Ориентируюсь на опыт работы с EhLib в Дельфи.

Неправильно.
Идея сортировки подсмотена как раз в ehLib и его гриде. Сортировка работает через драйвер, который индивидуален для каждого типа DataSet-а.
А уж как в нём будет реализовано - толи на стороне сервера, или на стороне клиента - это уже не дело самого RxDBGrid-а.

А то, что основные наборы сортируются на стороне клиента - это моя политика такая :-). Серверу и так есть чем заняться, кроме того, чтобы ещё мелкие прихоти операторов обрабатывать :-)
RustemNur писал(а):Грид не поддерживает (?) многоуровневую сортировку (т.е. "треугольнички с цифирками").

Да, это так - сортировку в несколько уровней я не делал. Мне это не нужно.
RustemNur писал(а):Прочитать состояние маркера сортировки невозможно (?) - в EhLib за это отвечало сложное свойство SortMarkedColumns, а как в RxDBGrid, я не понял.

Ну, пока эти поля скрытые - но если есть желание, то можно их и опубликовать.

RustemNur писал(а):Как нужно действовать, чтобы:
1. "Прочитать" желания пользователя по сортировке (и сформировать секцию ORDER BY)
2. Показать пользователю, по каким столбцам сейчас отсортирован набор данных

изучить код содулей exsortXXXX и написать свой аналог - там всё очень просто.

PS
а какой тип датасет-а используется? если в библиотеке его ещё нет - то с удовольствием включу результат в общие исходники.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Сортировка на стороне сервера

Сообщение RustemNur » 17.03.2011 16:02:11

alexs писал(а):Идея сортировки подсмотена как раз в ehLib и его гриде. Сортировка работает через драйвер, который индивидуален для каждого типа DataSet-а.
А уж как в нём будет реализовано - толи на стороне сервера, или на стороне клиента - это уже не дело самого RxDBGrid-а.

Это понятно. Под "не готова" я имел в виду именно "треугольнички" и "цифирки", и чтение их состояния.

alexs писал(а):А то, что основные наборы сортируются на стороне клиента - это моя политика такая :-). Серверу и так есть чем заняться, кроме того, чтобы ещё мелкие прихоти операторов обрабатывать :-)

Это сильно от задачи зависит и от объемов. Тут нет однозначного решения.
А насчет локальной сортировки у меня вообще сомнения, связанные с моей темностью (и ленностью хоть сколько-нибудь поизучать исходники - я это очень не люблю, к сожалению):
На всех столбах написано, что датасеты в Дельфи фетчат столько записей, сколько влезает в Грид. (Для ФБ "дед" делал выводы, что еще плюс клиентская либа (fbclient.dll) со своим буфером. Влад вроде не возражал). И если открывается большой набор, то это все равно не страшно. пока мы его не решим локально отсортировать. Дальше есть два пути, оба ужасные, и я не знаю, по какому (третьему?) пути следуют твои компоненты. Отдельная тема - это использование индексов при локальной сортировке (BDE-шный TTbale их, вроде, использовал, но их ведь еще загрузить нужно).Вообщем, я свято верю (почему-то), что сервер отсортирует гораздо эффективнее клиента. И канал не особо загрузится.

alexs писал(а):... сортировку в несколько уровней я не делал. Мне это не нужно.

Иногда второй уровень таки бывает нужен. Особенно если что-то с датами.

alexs писал(а):Ну, пока эти поля скрытые - но если есть желание, то можно их и опубликовать.

Вроде бы без этого затруднительно будет секцию ORDER BY построить.

alexs писал(а):а какой тип датасет-а используется?

Ну какой-какой? Твой, конечно. :)
Спасибо, кстати, огромное.
RustemNur
новенький
 
Сообщения: 61
Зарегистрирован: 20.02.2011 11:21:14
Откуда: Уфа

Re: Сортировка на стороне сервера

Сообщение stikriz » 17.03.2011 23:47:56

Я встречал программы, которые фетчат только первые 500 строк и все.
Зато у них есть замечательные удобные отборы, точнее, отбор и сортировка - мастер такой, который меняет запрос к серверу.
Склоняюсь к мнению, что это правильно. Не представляю, что пользователю нужно где-то, кроме отчетов видеть в гриде сразу больше нного количества строк, ну, пусть 500 или 300, да хоть 1000.
Аватара пользователя
stikriz
энтузиаст
 
Сообщения: 612
Зарегистрирован: 15.03.2006 09:37:47

Re: Сортировка на стороне сервера

Сообщение RustemNur » 18.03.2011 00:38:59

stikriz писал(а):... мастер такой, который меняет запрос к серверу.

Это и есть сортировка на сервере.
Более того, многие запросы при своем выполнении "попутно" сортируют результирующий набор, так что сортировка оказывается "бесплатной". Если, конечно, она совпадает с желаемой.

stikriz писал(а):. Не представляю, что пользователю нужно где-то, кроме отчетов видеть в гриде сразу больше нного количества строк, ну, пусть 500 или 300, да хоть 1000.

Грид в 300 строк (а тем более 1000) - это просто не реально. На экране ему места не хватит. Единственная "опасная" операция - это Ctrl+End (или "Last" в Навигаторе), которую можно проконтролировать.
RustemNur
новенький
 
Сообщения: 61
Зарегистрирован: 20.02.2011 11:21:14
Откуда: Уфа

Re: Сортировка на стороне сервера

Сообщение alexs » 18.03.2011 03:08:10

RustemNur писал(а):На всех столбах написано, что датасеты в Дельфи фетчат столько записей, сколько влезает в Грид.

В FBDataSet фетчится точно также, по необходимости. Но уже раз отфетченное - остаётся в пределах активности датасета (ну это логично).
Прервать фетчь - это можно - но напрямую ещё не сделано.
RustemNur писал(а):Иногда второй уровень таки бывает нужен. Особенно если что-то с датами.

Ну если нужно - давай патчик - включим.
RustemNur писал(а):Вроде бы без этого затруднительно будет секцию ORDER BY построить.

Через прокладку exsortXXXX это всё доступно. Просто напиши свой метод. Там даже задел по многоколоночной сортировке вроде даже намечался (список полей можно передавать).
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в RxLib

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru