Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Контроль фетча


Автор: LordMadman 22.7.2009, 17:32
Подскажите, плз,
как можно контролировать фетч в IBX.
Т.е. идея такая - при открытии dataset'а загружается малая часть данных (как оно и есть при настройках по умолчанию).
Пока пользователь думает, мы в фоне потихонечку подгружаем данные и показываем ему этот процесс, например, в строке состояния.
Как только пользователь что-то делает, загрузка приостанавливается или отменяется.

Плз, ссылки, советы, мысли....

Автор: Bose 26.7.2009, 23:36
C чем используешь Dataset?
При простом открытии Dataset-a, ни одна из записей не фетчится. При вызове метода Dataset.Next, TIbDataset фетчит следующую запись и помещает её в свой кэш.

Обычно фетч данных контролируют визуальные контролы. Например, возьмём ситуацию, когда к dataset-у подключен лежащий на форме TDbGrid. Форма создана и видна пользователю. Предполжим что в DbGrid-e на экране помещается 20 записей. При открытии датасета, он сообщает об открытии DbGrid-у. DbGrid в свою очередь запрашивает у датасета столько записей, сколько помещается на экране(в моём примере - 20). Датасет фетчит записи и помещает их в свой кэш(по умолчанию размер кэша равен 1000). Когда пользователь скроллит DbGrid ниже, DbGrid запрашивает следующие записи у Датасета. Датасет в свою очередь проверяет свой кэш, и если запись там не найдена, фетчит её из базы. И.т.д.

Даже не знаю насколько реально контролировать этот процесс. Для контроля именно фетча, IbDataset предлагает только один метод - FetchAll.

Добавлено через 1 минуту и 14 секунд
Ссылка, по работе с IBX-ами:
http://www.ibase.ru/devinfo/ibx.htm

Автор: Данкинг 26.7.2009, 23:47
А зачем это надо чисто практически? Можно уж сразу .FetchAll и ни о чём не думать. smile 

Автор: Bose 27.7.2009, 03:16
Цитата(Данкинг @  26.7.2009,  22:47 Найти цитируемый пост)
А зачем это надо чисто практически? Можно уж сразу .FetchAll и ни о чём не думать. smile  

А зачем вообще программировать? Можно же купить готовую программу. smile 

А по существу, например выборка отчётов из хранимых процедур может быть очень долгой. И FetchAll в таком случае может подвесить программу надолго. Хотя это уже тема по оптимизации БД и процедуры отчёта.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)