Вниз
Скачать: CL | DM;

Сортировка в TQuery   Найти похожие ветки 

← →
AndreyAs   (2003-09-01 13:11) [0]

Уважаемые мастера,
есть Query1 - экземпляр класса TQuery,
который вытаскивает на клиента из базы значительный объем данных.

Отфильтровать выборку по какому-либо критерию я могу при помощи свойств Filter и Filtered, а вот как организовать сортировку по какому-либо из полей, не делая новый запрос?


← →
Соловьев ©   (2003-09-01 13:12) [1]

select *
from table
order by field1


← →
AndreyAs   (2003-09-01 13:18) [2]

Я же говорю: не делая новый запрос!
Допустим, первоначально выборка отсортирована по field1.
Если я хочу отсортировать по field2, то нужно переписать SQL и снова получить данный.
Filter фильтрует данные на клиентской стороне. Можно ли отсортировать данные на клиентской стороне?
Ведь в итоге я получу ТЕ ЖЕ САМЫЕ записи просто в другом порядке. Зачем снова обращаться на сервер?


← →
Nikolay M. ©   (2003-09-01 13:22) [3]

TClientDataSet, RX-овые компоненты-таблицы в памяти.


← →
Соловьев ©   (2003-09-01 13:24) [4]

ClientDataSet


← →
AndreyAs   (2003-09-01 13:25) [5]

А через TQuery никак нельзя? Почему он фильтровать может, а сортировать нет?


← →
DenK_vrtz ©   (2003-09-01 13:26) [6]

Можно через TTable


← →
AndreyAs   (2003-09-01 15:19) [7]

ClientDataSet - это похоже то, что мне нужно, спасибо.

Тогда у меня получается связка из минимум трех компонентов: Query, ClientDataSet, DataSetProvider (+ DataSource, если понадобится). Правильно?


← →
Nikolay M. ©   (2003-09-01 15:51) [8]

Query -> DataSetProvider -> ClientDataSet -> DataSource (если понадобится)


← →
asafr   (2003-09-01 17:26) [9]

А вы уверены, что ClientDataSet каждый раз не делает новый запрос? Я нет....


← →
Nikolay M. ©   (2003-09-01 17:29) [10]


> А вы уверены, что ClientDataSet каждый раз не делает новый
> запрос? Я нет....

А я - да.
Хотя, можно сделать и так, что он хоть каждую секунду будет рефрешиться - это уж от рук зависит...


← →
AndreyAs   (2003-09-01 20:08) [11]

А что такого особенного надо сделать, чтобы он не рефрешился каждую секунду?

По идее я Query1.ExexSQL все один раз делаю.


← →
Nikolay M. ©   (2003-09-02 09:58) [12]


> А что такого особенного надо сделать, чтобы он не рефрешился
> каждую секунду?

Это был сарказм :)
А сделать можно так:

procedure Timer1.OnTimer (Sender: TObject);
begin
Query1.Active := False;
Query1.Active := True;
end;


;))


> По идее я Query1.ExexSQL все один раз делаю.

А почему ExecSQL? Если запрос на выборку данных, а не на изменение?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.016 c
1-71613
Алексей Петухов
2003-09-09 14:44
2003.09.22
Как определить конец таблицы в MSWord?


4-72012
SkiF
2003-07-21 00:48
2003.09.22
Запрещение получение фокуса своему приложению


1-71663
Alex-21
2003-09-07 19:35
2003.09.22
TWebrowser


3-71499
Russko
2003-09-01 09:38
2003.09.22
На конце 0


14-71826
Anatoly Podgoretsky
2003-08-31 00:23
2003.09.22
Очередная, третья перепись населения




   Наверх