После загрузки набор данных полностью готов к работе:

if LoadFileDialog.Execute then begin
ClientDataSet.LoadFromFile(LoadFileDialog.FileName);
ClientDataSet.Open;
end;

Работа с данными ти па BLOB

Если набор данных сервера содержит большие поля (например, изображения), передача данных по медленному каналу займет очень много времени, что, несомненно, снизит эффективность приложения. Простейшее решение проблемы - передача клиенту данных типа BLOB только в том случае, когда это ему действительно необходимо - т. е. исключительно по его запросу.

В компоненте TciientDataSet процессом передачи полей типа BLOB можно управлять, используя свойство

property FetchOnDeiTiand: Boolean;

По умолчанию оно равно значению True и клиентский набор данных "выкачивает" данные BLOB по мере необходимости автоматически. Это означает, что приложение будет останавливаться и заново получать данные при любом просмотре данных, прокрутке и т.д. Если свойство имеет значение False, для получения данных клиент должен явно вызвать метод

procedure FetchBlobs;

Но, кроме этого, в свойстве options компонента-провайдера TDataSetProvider обязательно должно быть установлено значение:

poFetchBlobsOnDemand := True;

Представление данных в формате XML

Набор данных клиента легко можно представить в формате XML. Для этого достаточно использовать свойство

property XMLData: OleVariant;

которое возвращает данные, содержащиеся в буфере Data (см. выше) в бинарном виде, в формате XML.

Например, клиентский набор данных можно сохранить в файле формата XML:

if SaveDialog.Execute then

withTFileStream.Create(SaveDialog.FileName, fmCreate) do

try

Write(Pointer(ClientDataSet.XMLData)Л, Length(ClientDataSet.XMLData)); finally

Free;
end;

Агрегаты

Наличие локального буфера данных позволяет компоненту TciientDataSet реализовать ряд дополнительных функций, основанных на использовании агрегатных функций применительно к полям всего набора данных, загруженного в локальный буфер.

К агрегатным функциям относятся: О АЛО - вычисляет среднее значение; □ count - возвращает число записей; □min - вычисляет минимальное значение; □мах - вычисляет максимальное значение; Ö SUM - вычисляет сумму.

Для их применения в компоненте TClientDataSet предусмотрены:

Ö
индексированный список объектов, инкапсулирующих агрегатные выражения - агрегаты;

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

Объекты - агрегаты

Для вычисления агрегатных выражений для всех записей набора данных используются объекты класса TAggregate. Индексированный список этих объектов содержится в свойстве

property Aggregates: TAggregates;

компонента TCiientDataSet. Прямым предком класса TAggregates является класс TCollection, поэтому для него можно использовать все основные приемы работы с коллекциями (см. гл. 7).

Для создания нового агрегата необходимо щелкнуть на кнопке свойства в Инспекторе объектов и, в появившемся Редакторе агрегатов, выбрать пункт ЛЛ1 во всплывающем меню или щелкнуть на кнопке ЛЛ1 New (рис. 22.3).


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Июль
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31