![]() |
|
|
![]()
|
|
| LordMadman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 22.7.2009 Репутация: нет Всего: нет |
Подскажите, плз,
как можно контролировать фетч в IBX. Т.е. идея такая - при открытии dataset'а загружается малая часть данных (как оно и есть при настройках по умолчанию). Пока пользователь думает, мы в фоне потихонечку подгружаем данные и показываем ему этот процесс, например, в строке состояния. Как только пользователь что-то делает, загрузка приостанавливается или отменяется. Плз, ссылки, советы, мысли.... |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 9 Всего: 51 |
C чем используешь Dataset?
При простом открытии Dataset-a, ни одна из записей не фетчится. При вызове метода Dataset.Next, TIbDataset фетчит следующую запись и помещает её в свой кэш. Обычно фетч данных контролируют визуальные контролы. Например, возьмём ситуацию, когда к dataset-у подключен лежащий на форме TDbGrid. Форма создана и видна пользователю. Предполжим что в DbGrid-e на экране помещается 20 записей. При открытии датасета, он сообщает об открытии DbGrid-у. DbGrid в свою очередь запрашивает у датасета столько записей, сколько помещается на экране(в моём примере - 20). Датасет фетчит записи и помещает их в свой кэш(по умолчанию размер кэша равен 1000). Когда пользователь скроллит DbGrid ниже, DbGrid запрашивает следующие записи у Датасета. Датасет в свою очередь проверяет свой кэш, и если запись там не найдена, фетчит её из базы. И.т.д. Даже не знаю насколько реально контролировать этот процесс. Для контроля именно фетча, IbDataset предлагает только один метод - FetchAll. Добавлено через 1 минуту и 14 секунд Ссылка, по работе с IBX-ами: Работа с компонентами IBX или использование InterBase eXpress в приложениях на Delphi и C++Builder, с СУБД Firebird и InterBase |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
А зачем это надо чисто практически? Можно уж сразу .FetchAll и ни о чём не думать.
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 9 Всего: 51 |
А зачем вообще программировать? Можно же купить готовую программу. А по существу, например выборка отчётов из хранимых процедур может быть очень долгой. И FetchAll в таком случае может подвесить программу надолго. Хотя это уже тема по оптимизации БД и процедуры отчёта. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |