Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];

Вниз

Сортировка в 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 вся ветка

Форум: "Базы";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
6-71794
Dwemer
2003-07-22 00:31
2003.09.22
Как поймать момент подключения к инету?


3-71519
Langolier
2003-08-30 00:01
2003.09.22
Фильтр записей в Detail таблице...


14-71955
Карелин Артем
2003-08-29 15:26
2003.09.22
Жигули VS Мерседес.


3-71509
Eagle Owl
2003-08-30 00:28
2003.09.22
Добавление поля к таблице


3-71486
Alniko
2003-09-01 19:26
2003.09.22
Сохрание базы данных в файл .DBF





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский