| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 и ни о чём не думать. |