Нарушение уникальности записи
try
tMyTable.Post;
excepton 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);
consteKeyViol = 9729;
variDBIError: Integer;
beginif (E is EDBEngineError) then
begin
iDBIError := (E as EDBEngineError).Errors[0].Errorcode;
case iDBIError of
eKeyViol:
begin
MessageDlg('Нарушение уникальности записи ', mtWarning,
[mbOK], 0);
Abort;
end;
end;
Затем для каждой таблицы вашего приложения создайте следующий обработчик события:
face="Courier New" size="2"> procedure TMainForm.Table1EditError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
beginDBError(Table1, E, Action);
end;
Таким образом вы можете перехватить множество ошибок. Смотрите примеры от Borland, там много чего есть полезного.