Сортировка в DBGrid

Вопросы программирования и использования среды Lazarus.

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

Сортировка в DBGrid

Сообщение Xenar » 20.09.2011 09:04:13

Такой вопрос. В проекте сортировка в DBGride выполнена через изменения в ORDER BY. (БД MySQL) Все нормально работает. Но база разрастается и такой метод сортировки стал подтормаживать.
Как реализовать сортировку в самом сете (SQLQuery1) и связать ее с DBGride ?? Может кто что подскажет?
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: Сортировка в DBGrid

Сообщение Padre_Mortius » 20.09.2011 09:37:38

а разве ORDER BY не является частью SQL-запроса из SQLQuery?
DBGrid к сортировке никакого отношения не имеет, он только отображает информацию из Dataset
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Сортировка в DBGrid

Сообщение Xenar » 20.09.2011 10:08:00

Да сортировка делается путем повторного запроса к MySQL путем изменения значения в ORDER BY, все верно.
Но мне хочется чтобы сортировка была в самом Dataset без повторного запроса к БД, так имхо будет быстрее обрабатыватся.
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: Сортировка в DBGrid

Сообщение Mr.Smart » 20.09.2011 10:34:59

Xenar писал(а):так имхо будет быстрее обрабатыватся

Наивно :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Сортировка в DBGrid

Сообщение Xenar » 20.09.2011 12:12:29

Mr.Smart писал(а):
Xenar писал(а):так имхо будет быстрее обрабатыватся

Наивно :wink:

Ясно, а других методов не существует, кроме как вышеупомянутых??
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: Сортировка в DBGrid

Сообщение wavebvg » 20.09.2011 12:20:12

Xenar писал(а):Ясно, а других методов не существует, кроме как вышеупомянутых??

Если накладные расходы на извлечение данных являются слишком значительными, тогда есть такие варианты:
1. Унаследоваться от текущего датасет-а и научить его сортировать
2. Найти виртуальный датасет на клиенте и пользоваться им (загружать в него из открытого)
3. Завести синхронизируемую базу на клиенте и использовать её в качестве рабочей (менять в запросе к клиентской базе данных ORDER BY)

ЗЫ Стоит указать задачу
wavebvg
постоялец
 
Сообщения: 354
Зарегистрирован: 28.02.2008 04:57:35

Re: Сортировка в DBGrid

Сообщение xcod » 20.09.2011 12:24:53

Xenar писал(а):Ясно, а других методов не существует, кроме как вышеупомянутых??

http://freepascal.ru/article/lazarus/20090720000443/
xcod
постоялец
 
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Re: Сортировка в DBGrid

Сообщение Xenar » 20.09.2011 12:31:52

Спасибо всем, буду разбираться
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: Сортировка в DBGrid

Сообщение alexrayne » 21.09.2011 11:04:35

посмотрите в сторону TClientDataSet
а лучше
viewtopic.php?f=26&t=2523&start=330&hilit=FBDataSet+%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0+%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0+%D0%BA+%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC+FireBird%2FInterbase.
там есть встроеная сортировка полнозагруженого рекордсета.
alexrayne
постоялец
 
Сообщения: 125
Зарегистрирован: 03.12.2008 16:56:26

Re: Сортировка в DBGrid

Сообщение stikriz » 21.09.2011 11:34:24

Если база разрастается, то не нужно тянуть все записи на клиента.
Можно ограничить, например, 500стами строк. Понятно, что к гриде еще будет нужен фильтр.

Если же сортировать на клиенте, то всегда придется тянуть все строки на клиента сразу.
И все-таки лучше сортировать запросом. Лучше подумать об индексах...
Аватара пользователя
stikriz
энтузиаст
 
Сообщения: 612
Зарегистрирован: 15.03.2006 09:37:47

Re: Сортировка в DBGrid

Сообщение sanjok » 21.09.2011 17:38:38

Xenar писал(а):Да сортировка делается путем повторного запроса к MySQL путем изменения значения в ORDER BY, все верно.
Но мне хочется чтобы сортировка была в самом Dataset без повторного запроса к БД, так имхо будет быстрее обрабатыватся.


TKDBGrid по-моему умеет сортировать прямо в таблице, если Вас это устроит.
sanjok
незнакомец
 
Сообщения: 8
Зарегистрирован: 24.05.2011 08:49:07

Re: Сортировка в DBGrid

Сообщение Ism » 21.09.2011 19:06:59

Но мне хочется чтобы сортировка была в самом Dataset без повторного запроса к БД, так имхо будет быстрее обрабатыватся.


Легко ! Делайте запрос не select , а insert во временную таблицу , желательно memory, а затем select из временной таблицы и у вас при минимуме телодвижений возможность многократной пересортировки без запроса в основную базу
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Сортировка в DBGrid

Сообщение GAMER » 21.09.2011 20:57:52

Если тянуть таблицу в локальную и потом сортировать локально, то не будет видно изменения сделанные другими клиентами. Лучше таки оптимизировать запросы.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Сортировка в DBGrid

Сообщение Ism » 21.09.2011 23:56:31

А что, это так важно ? И так и так изменения сделанные другими клиентами увидятся не скоро
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Сортировка в DBGrid

Сообщение GAMER » 22.09.2011 10:44:05

Кому важно, а кому и нет. А почему при сортировке на сервере изменения не будут видны?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

След.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru