![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как ограничит кол-во отбираемых в TQuery [D5, D7, Paradox]
yaric © (2004-03-04 00:11:00)Как ограничит кол-во отбираемых в TQuery записей по Select с условием, скажем нужно получить первые 100 записей, select top=100 не работает. И возможно ли отобрать скажем 100 записей начиная с 500-й.
yaric (2004-03-04 12:59:00) [1]база на том же компе что и прога с ней работающая, юзера работают через веб, у юзера даже машина не напрягаеться, а сервак пыхтит выбирая ему все это
sniknik (2004-03-04 12:43:00) [2]yaric (04.03.04 12:37) [27]
бред, зачем ограничивать потом? все время уйдет на перекачку данных с сервера(из основной таблицы), а когда данные уже на локали без разници какого оно размера BDE делает прямой доступ (моментально).
sniknik (2004-03-04 12:39:00) [3]> Вобщем как я понял с TQuery такое зделать никак не выйдет.
почему не выйдет? извратится можно, но нужно ли?
к примеру одно из... ODBC DSN парадокса (смотрим чтобы драйвер был уже ODBC JT32.dll, если нет доустанавливаем Jet), подключаемся в BDE не к стандартному а к созданному DSN, все получай запросы типа SELECT TOP 100 * FROM Table
(сразу скажу не лутший путь для этой "проблемы"(докачки), по мне лутше организовать докачку в асинхронном режиме, или использовать серверный курсор (нехай залистается ;), можно прервать в любой момент, но вот база и доступ для этого неподходяшие)
yaric (2004-03-04 12:37:00) [4]А возможно ли как то самому работать с этим файлом, скажем добавить туда какоето поле типа автоинкремент, а потом из него уже делать выборки?
Anatoly Podgoretsky (2004-03-04 12:33:00) [5]Технология там такая, на клиенте создается временный файл, затем в него отбираются все записи по условию, для этого надо пройтись по всей исходной таблице. Сформированый файл отображается.
Anatoly Podgoretsky (2004-03-04 12:32:00) [6]В принципе не возможно, поскольку это для десктоп систем, с файл серверной технологией. Вся выборка делается на клиенте.
SPIRIT (2004-03-04 12:31:00) [7]
> а потом листать хочет, предлагать уменьшить диапазон
в чём, собственно, листать то ?
yaric (2004-03-04 12:26:00) [8]Вобщем как я понял с TQuery такое зделать никак не выйдет.
Anatoly Podgoretsky (2004-03-04 12:13:00) [9]Не надо по частям, хочет все пусть и получит все, деже если ему на это потребуется пол дня.
yaric (2004-03-04 12:11:00) [10]>А то получается в духе "хочу, чтоб все было".
Условие есть (задает юзер), но если выбирать все сразу долго получаеться, а юзер тупой он хочет получить все начиная с каменного века и по сей день, а потом листать хочет, предлагать уменьшить диапазон, не каждый юзер правильно поймет, так пусть все получает, тока почастям
Desdechado (2004-03-04 12:10:00) [11]а ты у него предварительно выспроси, что он хочет, а потом и формируй SQL
yaric (2004-03-04 12:07:00) [12]Так юзер полистать желает, сам чегото выбрать, приче чтобы отсортировано было по тому полю, по которому он хочет
Nikolay M. (2004-03-04 12:06:00) [13]
> вообще мне нужно отобрать записи по условию, причем из этих
> отобранных хочу получить не все (много их однако), а только
> какуюто часть, причем условие может быть разным
Дык ты сформулируй хотя бы для себя, какую именно часть ты хочешь видеть. А то получается в духе "хочу, чтоб все было".
Desdechado (2004-03-04 11:56:00) [14]отбор в TQuery производится по условию WHERE, а не по номкру записи
Zacho (2004-03-04 11:54:00) [15]А просто не надо много выбирать. Как ты думаешь, что для юзера удобнее - посмотреть сколько записей выбралось, и если слишком много - уточнить условия поиска, или просматривать туеву хучу страниц с данными ?
yaric (2004-03-04 11:52:00) [16]хочу отображать данные постранично, если делать полную выборку, много получаеться и запрос долго работает
Карелин Артем (2004-03-04 11:51:00) [17]Завести таблицу в памяти и в нее копировать эти 100 первых.
Zacho (2004-03-04 11:48:00) [18]Еще раз: зачем тебе это ? Лично я не знаю никакого разумного применения конструкций типа TOP, кроме как в веб-приложениях и в некоторых случаях для избавления от подзапроса в where.
yaric (2004-03-04 11:44:00) [19]так оно у меня есть (основной ключ автоинкремент), да вот я не знаю с какой записи начнут отбираться - условие в запросе то всегда меняется
Zacho (2004-03-04 11:42:00) [20]Ну вот и заведи поле с номером записи.