powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / сортировка по Lookup полям в гриде!?
7 сообщений из 7, страница 1 из 1
сортировка по Lookup полям в гриде!?
    #32374250
Uriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно реализовать сортировку записей в гриде.
Обычные поля сортирую двумя способами: 1-при клике на заголовке вставляю в запрос order by, 2-использую автоматическую сортировку DBgridEh.
При сортировке обычных полей никаких проблем не возникает, но как отсортировать Lookup поле?
...
Рейтинг: 0 / 0
сортировка по Lookup полям в гриде!?
    #32374281
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот это вот интерестно :))

правда я обошел это джоинами итд ,
вывел т.е. аля лукап поля которые не показываею в гриде и по ним сортирую ,
чем плох мой вариант , с редактированием ж№па :(

но если кто подскажет др. вариант я тоже не буду против :)

____
...
Рейтинг: 0 / 0
сортировка по Lookup полям в гриде!?
    #32374997
123456789098
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а херня в том что другого способа на сколько я знаю просто нет :(
...
Рейтинг: 0 / 0
сортировка по Lookup полям в гриде!?
    #32375030
SnowMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь затронули старую и больную тему: сортировка в Gride, связанном с базой. Причем в общем случае нужно сортировать не только по Lookup, но и по Calc полям. Насколько мне известно, хорошего компонента нет. Пару лет назад я пытался слелать DBGrid с сортировкой (наверняка многие пытались), сортировка в Gride не совпадает с сортировкой в DataSet, ну то есть DataSet (обычно в виде Query) пришел с сервера с какой-то сортировкой, накрутили Lookup и Calc поля, а затем в клиентском приложении сортируем как хотим.

Проблема оказалась в следующем: при движении по гриду вверх и вниз в DataSet вместо обычных Next() и Prior(), приходится делать Locate причем в общем случае не известно по каким полям. Хорошо если просматриваеися первичный ключ или уникальный индекс, однако запрос может быть построен таким образом, что никакой уникальности не видно даже при хорошей структуре базы, т.е. либо слишком сложный SELECT, либо в SELECT не включены поля первичного ключа или уникального индекса. Делать Lacate по всем хранимым полям тоже не всегда полезно, т.к. могут быть повторяющиеся записи. Одним словом не получилось.

Идея об отключении от DataSet, т.е. при перемещении по гриду не перемещяться по датасет тоже не очень хороша, т.к. при корректировке все проблемы останутся.

Возможно кто нибудь знает решение этих проблем, хотя бы на идейно - теоретическом уровне, тогда компонент сделаем.
...
Рейтинг: 0 / 0
сортировка по Lookup полям в гриде!?
    #32375347
123456789098
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 SnowMan
я думаю что ниче путнего сделать в принципе не возможно.
по-моему разумению сортировать нужно не грид, а DataSet(кстати поднимался уже вопрос(точнее возмущение)почему нельзя было добавить в DataSet метод который бы пересортировывал уже вытянутые данные по указанному полю).
Но здесь опять же есть проблемы. просто один раз пересортировать данные для удобства просмотра это одно дело, а вот сортировать по лукаповским и вычисляемым полям это совсем другое.... при педактировании по логике нужно каждый раз пересортировывать данные. ... а если отредактировать нужно пару тысячь записей .... а при этом если в DataSet пару миллионов записей ... ни у одного человека не найдется столько терпения чтоб переждать все это.

Вот и получается что кривые и некрасивые методы описанные JibSkeart ( и использующиеся не только им) оказываются более предпочтительны (заметьте я не сказал что методы хорошие) а плане скорости выполнения.

вот и получается что вся жизнь дерьмо ... ;))
...
Рейтинг: 0 / 0
сортировка по Lookup полям в гриде!?
    #32375407
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот и получается что вся жизнь дерьмо ... ;))

По выше изложеномы я ужо енто понимаю
____
...
Рейтинг: 0 / 0
сортировка по Lookup полям в гриде!?
    #32375530
SnowMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 123456789098
То, что жизнь тяжела - это я полностью согласен.
А вот то, что ничего путного нельзя сделать не согласен. В Вашем сообщении основной проблемой являлось быстродействие (на паре милионов строк). Естественно если при хранении данных пользоваться плоской таблицей и традиционными методами сортировки, то так и получится. Однако если пользоваться сбалансированным деревом, то кол-во операций при изменении одной записи (если это изменение привело к изменения порядка записей) пропорционально двоичному логарифму N, где N - кол-во записей. Двоичный логарифм от 2 000 000 равен 21. Такое перестроение дерева будет меньше секунды. Правда переодически нужно балонсировать дерево, чтобы отдельные ветви сильно не удлиннялись, это относительно медленно, в наихудшем случае порядка N, однако при большем дереве очень редко.
Насчет изменения пары тысяч. Если изменять по одной записи, то время перекидывания листа дерева распределится на каждую операцию и не будет заментно. Если это какая либо контекстная замена на клиенте, то будет медленно. Однако контекстную замену чаще белают на сервере (UPDATE ...) c переоткрытием DataSet.
Для реализации всего выше сказанного видимо надо переопределять Query, DataSet, DataSource и DBGrid. Так что правильно сказано, что жизнь тяжела.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / сортировка по Lookup полям в гриде!?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]