![]() |
![]() |
![]() |
Набор данных
Перед открытием набора данных необходимо установить тип используемой при редактировании записей блокировки. Для этого применяется свойство
type TADOLockType = (ItUnspecified, ItReadOnly, ItPessimistic, ItOptimistic, ItBatchOptimistic); property LockType: TADOLockType;
ItUnspecified — блокировка задается источником данных, а не компонентом;
ItReadOnly — набор данных откроется в режиме только для чтения;
ItPessimistic — редактируемая запись блокируется на все время редактирования до момента сохранения в хранилище данных;
ItOptimistic — запись блокируется только на время сохранения изменений в хранилище данных;
ItBatchOptimistic — запись блокируется на время сохранения в хранилище данных при вызове метода updateBatch.
Примечание
Для того чтобы установка блокировки сработала, свойство LockType должно быть обязательно модифицировано до открытия набора данных.
Набор данных открывается методом Open и закрывается методом close. Также можно использовать свойство
property Active: Boolean;
Текущее состояние набора данных можно определить свойством
type
TObjectState = (stClosed, stOpen, stConnecting, stExecuting, stretching);
TObjectStates = set of TObjectState;
property RecordsetState: TObjectStates;
Набор данных в компонентах ADO основан на использовании объекта набора записей ADO, прямой доступ к этому объекту возможен при помощи свойства
property Recordset: _Recordset;
Но поскольку все основные методы интерфейсов объекта набора записей ADO перекрыты методами класса, в обычных случаях прямой доступ к объекту вам не понадобится. После обновления набора данных вызывается метод-обработчик
TRecordsetEvent = procedure(DataSet: TCustomADODataSet; const Error: Error;
var EventStatus: TEventStatus) of object; property OnFetchComplete: TRecordsetEvent;
где Error — ссылка на объект ошибки ADO, если она возникла.
Если же набор данных работает в асинхронном режиме, при обновлении вызывается метод-обработчик
TFetchProgressEvent = procedure(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer;
var EventStatus: TEventStatus) of object;
property OnFetchProgress: TFetchProgressEvent;
где параметр Progress показывает долю выполнения операции.
![]() |
![]() |
![]() |
Когда тот или иной физик использует понятие "физический вакуум", он либо не понимает абсурдности этого термина, либо лукавит, являясь скрытым или явным приверженцем релятивистской идеологии.
Понять абсурдность этого понятия легче всего обратившись к истокам его возникновения. Рождено оно было Полем Дираком в 1930-х, когда стало ясно, что отрицание эфира в чистом виде, как это делал великий математик, но посредственный физик Анри Пуанкаре, уже нельзя. Слишком много фактов противоречит этому.
Для защиты релятивизма Поль Дирак ввел афизическое и алогичное понятие отрицательной энергии, а затем и существование "моря" двух компенсирующих друг друга энергий в вакууме - положительной и отрицательной, а также "моря" компенсирующих друг друга частиц - виртуальных (то есть кажущихся) электронов и позитронов в вакууме.
Однако такая постановка является внутренне противоречивой (виртуальные частицы ненаблюдаемы и их по произволу можно считать в одном случае отсутствующими, а в другом - присутствующими) и противоречащей релятивизму (то есть отрицанию эфира, так как при наличии таких частиц в вакууме релятивизм уже просто невозможен). Подробнее читайте в FAQ по эфирной физике.
|
![]() |