![]() |
![]() |
![]() |
Состояние записи
Класс TCustomADODataSet обладает дополнительными возможностями, которые позволяют отслеживать состояние каждой записи.
Для текущей записи набора данных можно определить ее состояние. Для этого предназначено свойство
TRecordStatus = (rsOK, rsNew, rsModified, rsDeleted, rsUnmodified, rslnvalid, rsMultipleChanges, rsPendingChanges, rsCanceled, rsCantRelease, rsConcurrencyViolation, rsIntegrityViolation, rsMaxChangesExceeded, rsObjectOpen, rsOutOfMemory, rsPermissionDenied, rsSchemaViolation, rsDBDeleted); property RecordStatus: TRecordStatusSet;
где rsOK — запись успешно сохранена; rsNew — запись добавлена; rsModified — запись была изменена; rsDeleted — запись удалена; rsUnmodified — запись без изменений; rslnvalid — запись не может быть сохранена из-за неверной закладки; rsMultipleChanges — запись не может быть сохранена из-за множественных изменений; rsPendingChanges — запись не может быть сохранена из-за ссылки на несохраненные изменения; rsCanceled — операция с записью была отменена; rsCantRelease — запись заблокирована; rsConcurrencyViolation — запись не может быть сохранена из-за типа блокировки; rsintegrityvioiation — нарушена ссылочная целостность; rsMaxChangesExceeded — слишком много изменений; rsObjectOpen — конфликт с объектом базы данных; rsoutofMemory — недостаток памяти, rsPermissionDenied — нет доступа; rsSchemaViolation — нарушение структуры данных; rsDBDeleted — запись удалена в БД.
Как видите, благодаря этому свойству состояние отдельной записи может быть определено очень точно.
Кроме этого, метод
type
TUpdateStatus = (usUnmodified, usModifled, uslnserted, usDeleted);
function UpdateStatus: TUpdateStatus; override;
возвращает информацию о состоянии текущей записи.
Соответственно до и после изменения записи вызываются методы-обработчики
TWillChangeRecordEvent = procedure(DataSet: TCustomADODataSet; const Reason: TEventReason;
const RecordCount: Integer;
var EventStatus: TEventStatus) of object;
property OnWillChangeRecord: TWillChangeRecordEvent;
И
TRecordChangeCompleteEvent = procedure(DataSet: TCustomADODataSet; const Reason: TEventReason;
const RecordCount: Integer; const Error: Error;
var EventStatus: TEventStatus) of object;
property OnRecordChangeComplete:
TrecordChangeCompleteEvent;
где параметр Reason позволяет узнать, какой метод изменил записи, а параметр RecordCount возвращает число измененных записей.
![]() |
![]() |
![]() |
Когда тот или иной физик использует понятие "физический вакуум", он либо не понимает абсурдности этого термина, либо лукавит, являясь скрытым или явным приверженцем релятивистской идеологии.
Понять абсурдность этого понятия легче всего обратившись к истокам его возникновения. Рождено оно было Полем Дираком в 1930-х, когда стало ясно, что отрицание эфира в чистом виде, как это делал великий математик, но посредственный физик Анри Пуанкаре, уже нельзя. Слишком много фактов противоречит этому.
Для защиты релятивизма Поль Дирак ввел афизическое и алогичное понятие отрицательной энергии, а затем и существование "моря" двух компенсирующих друг друга энергий в вакууме - положительной и отрицательной, а также "моря" компенсирующих друг друга частиц - виртуальных (то есть кажущихся) электронов и позитронов в вакууме.
Однако такая постановка является внутренне противоречивой (виртуальные частицы ненаблюдаемы и их по произволу можно считать в одном случае отсутствующими, а в другом - присутствующими) и противоречащей релятивизму (то есть отрицанию эфира, так как при наличии таких частиц в вакууме релятивизм уже просто невозможен). Подробнее читайте в FAQ по эфирной физике.
|
![]() |