Иллюстрированный самоучитель по Delphi

Меню

 
Главная
Assembler
Turbo Pascal
C++ Builder
Delphi
Java
Скачать


Статистика

 

   


Реклама

 
Капитал-Право. Мы готовы выполнить ликвидацию юридического лица. Заходите.. Избавим Вас от лечение аллергического ринита, аллергическая астма без антибиотиков. аккумуляторный электроинструменты ремонт электроинструмента

 

 

 

Локальный буфер

 

После передачи клиенту записи набора данных размещаются в локальном буфере, размер которого определяется свойством

property CacheSize: Integer;

Значение свойства есть число записей, помещаемых в локальный буфер, и оно не может быть меньше 1. Очевидно, что при достаточно большом размере буфера компонент будет обращаться к источнику данных не так часто, но при этом большой буфер заметно замедлит открытие набора данных. Кроме этого, при выборе размера локального буфера необходимо учитывать доступную компоненту память. Это можно сделать путем несложных вычислений:

"acheSizelnMem := ADODataSet.CacheSize * ADODataSet.RecordSize;

где RecordSize — свойство

 property RecordSize: Word;

возвращающее размер одной записи в байтах.

Как видите, компоненты ADO не избежали общей проблемы клиентских данных — при плохом качестве соединения работа приложения замедляется. Однако кое-что все-таки сделать можно. Если при навигации по записям вам не требуется отображать данные в визуальных компонентах пользовательского интерфейса, свойство property BlockReadSize: Integer;

позволяет организовать блочную пересылку данных. Оно задает число записей, помещаемых в один блок. При этом набор данных переходит в состояние dsBlockRead. По умолчанию блочная пересылка не используется и значение свойства равно 0. Также можно ограничить максимальный размер набора данных. Свойство

property MaxRecords: Integer

задает максимальное число записей набора данных. По умолчанию свойство имеет значение 0 и набор данных не ограничен.

Общее число записей набора данных на этот момент возвращает свойство только для чтения

property RecordCount: Integer;

При достижении последней записи набора данных вызывается метод-обработчик

TEndOfRecordsetEvent = procedure (DataSet: TCustomADODataSet;

var MoreData: WordBool;

var EventStatus: TEventStatus) of object;

property OnEndOfRecordset: TEndOfRecordsetEvent;

При этом параметр MoreData показывает, действительно ли достигнут конец набора данных. Если MoreData = True, то это означает, что в хранилище данных еще имеются записи, не переданные клиенту.

 

Copyright legioner © intbook.info, 2007