Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

КАК: Сортировка грида, не трогая источника данных. [D6, MSSQL]


BlackTiger ©   (2002-09-14 10:26:00) 

Везде сортируется слишком топорно - ловишь нажатие на заголовок, а потом в Query модифицируешь "ORDER BY" и делается Requery.

А вот у меня Query - результат навороченной хранимой процедуры, генерирующей crosstab, и каждый Requery выполняется от 30 секунд до 2-3 минут, в зависимости от установок.

Как сортировать ТОЛЬКО колонки грида, не трогая источник?
Может кто подскажет?

З.Ы.: Насколько я представляю - это что-то вроде операций с отключенным источником данных, но как это реализовать - не имею понятия.


Delirium   (2002-09-14 14:03:00) [1]

> sniknik

Про отключение: я просто показал, как это элементарно с ADO, действительно и сортировать, и отимизировать ("индексировать") можно "на коннекте".


sniknik   (2002-09-14 13:51:00) [2]

зачем нужны навороченные компоненты? самый простой способ
Delirium © (14.09.02 11:41)
ADOQuery1.Sort:="MyField1";
сортировка по столбцу на клиенте. или ты не Ado используеш?
(по моему и отключать ничего не надо все одно слиентский датасет отсортируется)


Lola   (2002-09-14 13:30:00) [3]

Только сейчас увидела тут же ветку: http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1031925073&n=1


Lola   (2002-09-14 13:29:00) [4]

Кажется в EhLib грид с сортировкой


kaif   (2002-09-14 12:33:00) [5]

Я слышал, что существуют навороченные grid-ы, имеющие возможность сортировки набора на стороне клиента (без перезапроса)


Dmitriy Polskoy   (2002-09-14 11:45:00) [6]

У меня индекс не работает. Не знаю почему. Меняю индекс - ни каких изменений в сортировке.


Delirium   (2002-09-14 11:41:00) [7]

Это легко сделать используя клиентский курсор ADO - ADOQuery1.CursorLocation:=clUseClient, у активной выборки откулючаем соединение с сервером ADOQuery1.Connection:=nil и сортируем как угодно: ADOQuery1.Sort:="MyField1 ASC, MyField2 DESC". Можно даже индексировать, правда реализация _RecordSet в Delphi делает Properties - readonly, но всегда можно "обмануть" компилятор: Variant(ADOQuery1.Recordset).Fields["MyField1"].Properties["Optimize"]:=True;


Polevi   (2002-09-14 11:20:00) [8]

индекс на клиенте пробовал ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо