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

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

ограничить кол-во строк результата запроса [D7, dBase, FoxPro, Paradox]


Женя ©   (2004-04-19 12:56:00) 

нужно для создания превьюшки експортера базы.
Достаточно показать первые 10 строк, чтобы показать, как будет работать експорт.
Как организовать запрос?
пробовал:
select top 10 * from citi
select first 10 * from citi

получал ошибку синтаксиса.
Как можно реализовать задачу? кто знает, что это за конструкция fetch?


Женя   (2004-04-19 14:19:00) [1]

понял, всем спасибо


Danilka   (2004-04-19 14:12:00) [2]

[10] Женя   (19.04.04 14:06)
Он и так ограничен. :))
ROWSET SIZE - это то количество записей, которые тебе приходят за один раз. Если ты выходишь за этот диапазон, тебе приходит очередная порция. Если не ошибаюсь, по-умолчанию он равен 20-и, то есть если в твоем гриде видимо меньше 20-и записей, то ты только их и получишь, а никак не 45000. :))


Reindeer Moss Eater   (2004-04-19 14:10:00) [3]

Если бы конструкция select top поддерживалась, то ограничение видимого результата (еще один отдельный запрос для превью) приведет к обратному результату.
Производительность снизится.


Женя   (2004-04-19 14:06:00) [4]

ок, понял. То есть ограничение видимого результата в быстродействии не даст, а значит и делать его не стоит?


Vlad   (2004-04-19 13:57:00) [5]


> Женя   (19.04.04 13:49) [8]

DBGrid в своем буфере содержит только видимуючасть набора данных. Этот буфер называется DataLink, никаких 45 000 записей в него не "вписывается", ты изначально неверно поставил вопрос.
Собственно сам TQuery изначально не хранит весьнабор данных, а фетчит записи по мере необходимости, т.е. по мере скроллинга.
Количество записей, которые изначально фетчатся в TQuery ты можешь посмотреть в настройках БДЕ-алиаса, параметр ROWSET SIZE.
Сомневаюсь что у тебя там стоит 45 000


Женя   (2004-04-19 13:49:00) [6]

я удивлен.
а зачем тогда татасорс вообще?

Я представляю процесс примерно так:

tQuery (аналог пхп-шного mysql_query)выполняет запрос и получает пакет данных.
tDatasource (аналог mysql_fetch_array) парсит полученный пакет на таблицу
tDbGrid обыкновенная визуализация, аналог html-таблицы.

А как на самом деле все работает? где об этом достоверно узнать?


Anatoly Podgoretsky   (2004-04-19 13:39:00) [7]

Женя   (19.04.04 13:31) [6]
Почему ты так решил?
И второй вопрос почему ты думаешь, что в DataSource вообще есть хоть какие то данные, таи их просто нет, совсем.


Женя   (2004-04-19 13:31:00) [8]

как это не будет? ведь в датасорс сразу весь результат выдается. А то что грид показывает-- это всего лишь видимая область. Или я что-то недопонимаю?


Reindeer Moss Eater   (2004-04-19 13:12:00) [9]

В невысокий грид и так не будет вписываться 45000 записей.
Зачем не хотеть ждать того, чего и так не будет?


Женя   (2004-04-19 13:10:00) [10]

движок самый стандартный, на BDE, на сколько я понял, это и есть LocalSql.

грид я и так невысокий сделал, но не хочу ждать, пока в него вписывается все 45 000 записей, когда мне хватит 10.

ссылку видел. Не помогло.


Курдль   (2004-04-19 13:04:00) [11]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1082283525&n=1


Anatoly Podgoretsky   (2004-04-19 13:04:00) [12]

select top 10 * from citi не поддержано в LocalSql
select first 10 * from citi не поддержано в LocalSql
fetch вроде тоже не поддержано

Если у тебя другой движок, то сам виноват, что не указываешь.


Reindeer Moss Eater   (2004-04-19 12:58:00) [13]

Показываешь в гриде?
Сделай его невысоким - и будет тебе не больше 10 записей.


Наверх

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