用Query或Table的话可以在OnUpdateError事件中处理:
procedure TFormDatabaseSource.QuerySystemUpdateError(DataSet: TDataSet;
E: EDatabaseError; UpdateKind: TUpdateKind;
var UpdateAction: TUpdateAction);
begin
if (E is EDBEngineError) then
begin
Application.MessageBox(PCHAR('保存时出错!请检查是否有如下错误:'+#13#10#13#10
+' 1、编号重复,例如商品编号!如果数据没有编号,名称是否重复!'+#13#10
+' 2、是否某些字段为空!例如:编号或名称字段!'+#13#10
+' 3、是否修改了已在使用中的资料的编号字段或删除一个已在使用中的资料!'+#13#10
+' 4、如果没有上述错误:请记录错误并与当地**公司办事处联系!'+#13#10#13#10
+Err_No+IntToStr((E As EDBEngineError).Errors[0].ErrorCode)+#13#10
+E_Mess+E.Message),'错误提示:',MB_OK_Error);
end else
Application.MessageBox(PChar(Other_Mess+Enter1+Enter2+E_Mess+Enter1+E.Message+Enter2+Da_Set+DataSet.Name+Enter1+DaSet_Ow+(DataSet.Owner as TForm).Caption),PChar(FormTitil),ButtonState);
UpdateAction:=uaAbort;
end;