FIBDataSet FIBClientDataSet

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Tohins
Сообщения: 4
Зарегистрирован: 07 окт 2005, 15:24

FIBDataSet FIBClientDataSet

Сообщение Tohins » 10 ноя 2005, 06:38

Есть база данных на Firebird. FIBquery c DataSource не связывается. С DataSet не работал. Есть такой запрос

SELECT FIO, Gruppa
FROM Students
WHERE gruppa = '1221'
Order by Fio;

Этот запрос забит в SelectSQL FIBDataSet, при выполнении запроса пересылается вся таблица или только то, что соответствует запросу? Если да, то какие компоненты использовать для передачи только результата выполнения запроса?

Так же есть FIBClientDataSet. В чем его отличие от FIBDataSet. Если можно, то подробно. Перерыто куча инфы в Интернете. Данные вопрос не затрагивается. Нормального объяснения связи с DBGrid нет.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 10 ноя 2005, 10:16

нормальное объяснение есть в документации по Delphi.
при выполнении запроса ничего не пересылается. данные пересылаются только когда ты делаешь Next, FetchAll, Last или Locate. Об этом написано в www.ibase.ru/devinfo/ibx.htm
ClientDataSet - это совсем другое, он считывает все записи с сервера, и позволяет с ними работать на клиенте (сортировать, делать поиск, сохранять в xml, считывать, делать пакетные обновления и т.п.). Отвлекись от FIBPlus, ищи информацию по стандартным компонентам (www.ibase.ru, Документация).
DBGrid, будучи подключенным к DataSet-у сам выбирает записи, сколько можно показать. Поэтому вначале выбирается N записей, а потом - сколько нужно (при прокрутке грида). Все это прекрасно видно в SQLMonitor.

FIBquery это эквивалент IBSQL в IBX. Опять же, читай ibx.htm упомянутый выше.
Если да, то какие компоненты использовать для передачи только результата выполнения запроса?
Сервер всегда пересылает клиенту только то, что вернул запрос. Ты путаешь файл-сервер и клиент-сервер.

Ответить