Правильная ссылка на эту страницу
http://az-design.ru/Support/SoftWare/Delphi/D3/SB36OnEditError.shtml

Глава 36. TDataSet.OnEditError

Событие OnEditError

Затрагиваемые объекты TDataSet
Назначение Событие OnEditError ссылается на процедуру обработчика событий, в которой можно указать специализированную обработку обнаруженных ошибок редактирования.
Объявление type TDataAction = (daFail, daAbort, daRetry);
TDataSetErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction) of object;
property OnEditError: TDataSetErrorEvent;
Пример синтаксиса
// Присвоить или отменить присвоение обработчика событий OnEditError
// в соответствии с флажком

procedure TTDataSetTestForm.OnEditErrorCheckBoxClick(Sender: TObject);
begin
   if OnEditErrorCheckBox.Checked
      then CustomerTable.OnEditError := CustomerTableEditError
      else CustomerTable.OnEditError := Nil;

end;
 
procedure TTDataSetTestForm.CustomerTableEditError(Dataset: TDataSet E: EDatabaseError; var Action: TDataAction);
var
   I: Integer;

Begin
// если ошибка является ошибкой механизма базы данных, сканировать стек
// ошибок машины, начиная с вершины стека и вниз ко дну.
   if (E is EDBEngineError) then with (E as EDBEngineError) do
     for I:=Pred(ErrorCount) downto 0 do
        with Errors[I] do
// проверить, является ли текущий вход стека требуемым. Обратите
// внимание, что константа DBIERR_LOCKED объявлена в модуле BDE.
   if Errorcode = DBIERR_LOCKED  then begin
// Если так, выдать  сообщение, установить действие по ошибке и
// разорвать цикл
    MessageBeep($FFFF);
    if MessageDlg('Record is locked another user. Retry?',
                   mtConfirmation,[mbYes,mbNo],0) = mrYes
       then Action := daRetry
       else Action := daAbort;
       break;
   end;

end;
Описание        Событие OnEditError включается в ситуации, когда обращение к методу Edit из TDataSet не было успешным из-за возникновения какой-либо ошибки. Если процедура обработчика событий для OnEditError определена, она имеет три параметра. Первый параметр идентифицирует TDataSet, второй параметр является объектом исключения EDatabaseError, описывающим ошибку, и третий параметр является управляющим параметром Action, передаваемым по ссылке. Параметр Action определяет, намерены ли вы выполнить пользовательскую обработку ошибки и способ осуществления этого. Параметру Action можно присвоить одно из трех значений: daFail, daAbort и daRetry. Действие daFail повторно возбуждает исходное исключение и передает его обычной системе обработки исключений. Значение параметра Action по умолчанию составляет daFail. Действие daAbort возбуждает "молчаливое" исключение EAbort. Действие daRetry будет пытаться еще раз выполнить операцию удаления. Обратите внимание, что если во время повтора встречается любая ошибка, обработчик событий OnEditError вызывается повторно.

[Свойство Active] [Метод ActiveBuffer] [Событие AfterCancel] [Событие AfterClose] [Событие AfterDelete] [Событие AfterEdit] [Событие AfterInsert] [Событие AfterOpen] [Событие AfterPost] [Метод Append] [Метод AppendRecord] [Метод ApplyUpdates] [Свойство AutoCalcFields] [Свойство BOF] [Событие BeforeCancel] [Событие BeforeClose] [Событие BeforeDelete] [Событие BeforeEdit] [Событие BeforeInsert] [Событие BeforeOpen] [Событие BeforePost] [Свойство Bookmark] [Свойство CachedUpdates] [Свойство CanModify] [Метод Cancel] [Метод CancelUpdates] [Метод CheckBrowseMode] [Метод ClearFields] [Метод Close] [Метод CommitUpdates] [Метод ControlsDisabled] [Метод CursorPosChanged] [Свойство DataSource] [Свойство DefaultFields] [Метод Delete] [Метод DisableControls] [Метод Edit] [Метод EnableControls] [Свойство EOF] [Свойство ExpIndex] [Метод FetchAll] [Метод FieldByName] [Свойство FieldCount] [Свойство FieldDefs] [Свойство FieldValues] [Свойство Fields] [Свойство Filter] [Свойство FilterOptions] [Свойство Filtered] [Метод FindField] [Методы FindFirst] [Методы FindLast] [Методы FindNext] [Методы FindPrior] [Метод First] [Свойство Found] [Метод FreeBookmark] [Метод GetBookmark] [Метод GetCurrentRecord] [Метод GetFieldList] [Метод GetFieldNames] [Метод GotoBookmark] [Свойство Handle] [Метод Insert] [Метод InsertRecord] [Метод IsLinkedTo] [Свойство KeySize] [Метод Last] [Свойство Locale] [Метод Locate] [Метод Lookup] [Свойство Modified] [Метод MoveBy] [Метод Next] [Событие OnCalcFields] [Событие OnDeleteError] [Событие OnEditError] [Событие OnFilterRecord] [Событие OnNewRecord] [Событие OnPostError] [Событие OnServerYield] [Событие OnUpdateError] [Событие OnUpdateRecord] [Метод Open] [Метод Post] [Метод Prior] [Свойство RecNo] [Свойство RecordCount] [Свойство RecordSize] [Метод Refresh] [Метод Resync] [Метод RevertRecord] [Метод SetDetailFields] [Метод SetFields] [Свойство State] [Метод UpdateCursorPos] [Свойство UpdateObject] [Метод UpdateRecord] [Свойство UpdateRecordTypes] [Метод UpdateStatus] [Свойство UpdatesPending]


<<< Пред. Оглавление
Начало раздела
След. >>>




Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:55 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/SoftWare/Delphi/D3/SB36OnEditError.shtml