Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Видеокурс программиста и крэкера 5D 2O17
(актуальность: декабрь 2O17)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Нарушение уникальности записи


 try
   tMyTable.Post;
 except
   on E : EDBEngineError do
     if E.Message = 'Key violation' then
     begin
       MessageDlgC ('Дублирование записи не допускается.', mtError, [mbOk], 0);
       // Я не уверен в том, что это нужно делать:
       tMyTable.Cancel;
     end
     else
       Raise;
 end;
 

Хорошим примером может служить проект DBERRORS.DPR, расположенный в каталоге Delphi 2 Demos. Выглядит это примерно так:

Создайте функцию типа этой:


 function DBError(DataSet: TDataSet;
   E: EDatabaseError; var Action: TDataAction);
 const
   eKeyViol = 9729;
 var
   iDBIError: Integer;
 begin
   if (E is EDBEngineError) then
   begin
     iDBIError := (E as EDBEngineError).Errors[0].Errorcode;
     case iDBIError of
       eKeyViol:
       begin
         MessageDlg('Нарушение уникальности записи ', mtWarning, [mbOK], 0);
         Abort;
       end;
   end;
 

Затем для каждой таблицы вашего приложения создайте следующий обработчик события:


 procedure TMainForm.Table1EditError(DataSet: TDataSet;
   E: EDatabaseError; var Action: TDataAction);
 begin
   DBError(Table1, E, Action);
 end;
 

Таким образом вы можете перехватить множество ошибок. Смотрите примеры от Borland, там много чего есть полезного.




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS