→ Пошук по сайту       Увійти / Зареєструватися
Знання Технология ADO в Delphi Компоненты Delphi для поддержки ADO Общие свойства компонентов-наборов

Специфичные свойства компонентов-наборов

ADO-наборы имеют непосредственного родителя TCustomAdoDataSet, от которого они унаследовали многие специфичные свойства. В этом разделе проводится общий обзор особенностей ADO-наборов, в последующих описываются наиболее важные свойства, методы и события класса TCustomADODataSet.

Прежде всего, это свойства Connection и ConnectionString, с помощью которых ADO-набор может самостоятельно связаться с источником данных.

С помощью свойства BlockReadSize программист может создать такой режим работы, когда навигация по данным не приводит к изменениям в связанных с набором визуализирующих компонентах. Для этого в BlockReadSize следует поместить любое ненулевое значение. В этом случае свойство State автоматически примет значение dsBlockRead и навигация по НД будет проходить значительно быстрее. Чтобы отменить этот режим, достаточно поместить в BlockReadSize значение 0.

В отличие от BDE, наборы ADO могут создавать курсоры двух типов - на стороне клиента или на стороне сервера (свойство Cursor Connection). В сочетании со свойством CursorType это дает программисту гибкий инструмент влияния на скоростные качества передачи данных и разграничение доступа к данным.

С помощью свойства EnabledBCD программист может заменить вещественные данные форматом двоично-десятичных данных (BCD). Этот формат позволяет избежать ошибок округления вещественных чисел. Новым по сравнению с BDE-ориентированными компонентами является также свойство LockType, позволяющее повысить скорость работы в многопользовательской среде за счет учета специфики БД.

С помощью свойства MarshalOptions можно несколько снизить нагрузку на сеть при создании курсора на клиентской машине.

Важным отличием является то, что ADO-компоненты имеют свойство RecordSet, содержащее ссылку на одноименный базовый объект. Если программист хорошо знаком с технологией ADO, он может напрямую обратиться к этому свойству для более гибкого доступа к данным. Мы использовали это свойство в лекции TADOCommand, чтобы показать, каким образом компонент TADOCommand может передать набор данных:

AdoDataSetl.RecordSet := AdoCommandl.Execute;

ADO-компоненты способны работать с кэшированием данных, но делают это по-своему. Во-первых, в терминологии ADO вместо термина кэширование данных используется понятие пакетной их обработки, после завершения которой все сделанные в пакете изменения либо подтверждаются, либо отвергаются. Для работы в пакетном режиме ADO-набор должен:

  • в свойстве CursorType содержать умалчиваемое значение stKeySet или значение stStatic,
  • в свойстве LockType содержать значение ltBatchOptimistic
  • наконец, сами данные должны быть получены с помощью SQL-запроса SELECT .

Вот как, например, готовится компонент AdoDataSet к работе в пакетном режиме:

with ADODataSetl do 
begin
  CursorLocation := clUseServer;
  CursorType := ctKeyset;
  LockType := ItBatchOptimistic;
  CommandType := cmdText;
  CommandText := 'SELECT * FROM Employee';
  Open; 
end;

Заметим, что поскольку компонент TADOTable не имеет свойств CommandType и Сот-mandText, его перевод в режим пакетной обработки данных имеет свою специфику:

 
AdoTablel.LockType := ItBatchOptimistik; 
AdoTablel.Open;

В пакетном режиме можно по этой же схеме выполнять кэшированные изменения в хранимых процедурах, которые возвращают набор записей:

AdoStoredProcl.ProcedureName := 'MyBatchQuery'; 
AdoStoredProcl.LockType := ItBatchOptimistic; 
AdoStoredProcl.Open;

После получения пакетного набора записей с помощью свойства RecordStatus можно проверить статус конкретной записи, а с помощью FilterGroup - отфильтровать их. Подтвердить изменения можно с помощью метода UpdateBatch прекратить режим пакетной обработки и отказаться от сделанных изменений - с помощью CancelBatch. При этом с помощью передаваемым этим методам параметров можно отменить или подтвердить изменения для всех или только для отфильтрованных записей.

Есть определенная специфика в механизме сортировки записей ADO набора. Для сортировки в свойство Sort помещают список полей сортировки, разделенных запятыми. Каждое поле может дополнительно снабжаться признаками ascending (asс) или descending (DESC) для указания соответственно восходящего или нисходящего порядка сортировки (если ни одно из этих слов не указано, реализуется восходящая сортировка), например:

ADOQueryl.Sort := 'LastName ASC, DateDue DESC’;

Если в Sort помещена пустая строка, записи не сортируются и предъявляются в том виде, как они получены из БД. Если для НД создан клиентский курсор и нет соответствующих индексов для сортировки, на клиентской машине создается временный индекс, который уничтожается при изменении свойства Sort.

загрузка...
Сторінки, близькі за змістом