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

Советы » Ошибки БД » Нарушение уникальности записи

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, там много чего есть полезного.

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com