try Query.ExeSQL; except on E:Exception do begin messagebox(self.handle,PChar(E.Message),'Error',MB_ICONERROR); end; end;
同意belllab(bell) ,我的做法和他基本一致。
我用Sql Server的做法: 1、编一个公共的错误处理函数MyDBError 2、在事件中调用(PostError) 3、定义错误常量 const aliasname:string='connectdb';//数据库别名 ekeyviol=9729;//唯一健值数据重复 eminvalerr=9730;//小于字段的最小值限制 emaxvalerr=9731;//大于字段的最大值限制 erequiredfieldmissing=13059;//必需输入值的字段,不能为空 eforeignkey=9733;//找不到一对多关系的主数据表 edetailsexist=9734;//不能修改或删除一对多关系的主数据表记录 emasterlevel=9735; //一对多关系的主数据表等级错误 elookuperr=9736; //字段值超出lookup范围 elookupopenerr=9737; //lookup数据表打开失败 edetailopenerr=9738;//一对多关系的子数据表打开失败 emasteropenerr=9739;//一对多关系的主数据表打开失败 efieldisblank=9740;//字段是空的4、函数代码 Procedure MyDBError(E: EDatabaseError); var idberror:integer; begin if (E is EDBengineError) then begin idberror:=(E as edbengineerror).errors[0].errorcode; //showmessage(inttostr(idberror)); case idberror of erequiredfieldmissing: begin Application.MessageBox('关键字不能为空,请重新输入!','错误', MB_OK ); exit; end; ekeyviol: begin Application.MessageBox('编号重复,请重新输入!','错误', MB_OK ); exit; end; end; end; end;不够的话自己再扩充
Query.ExeSQL;
except
on E:Exception do begin
messagebox(self.handle,PChar(E.Message),'Error',MB_ICONERROR);
end;
end;
1、编一个公共的错误处理函数MyDBError
2、在事件中调用(PostError)
3、定义错误常量
const
aliasname:string='connectdb';//数据库别名
ekeyviol=9729;//唯一健值数据重复
eminvalerr=9730;//小于字段的最小值限制
emaxvalerr=9731;//大于字段的最大值限制
erequiredfieldmissing=13059;//必需输入值的字段,不能为空
eforeignkey=9733;//找不到一对多关系的主数据表
edetailsexist=9734;//不能修改或删除一对多关系的主数据表记录
emasterlevel=9735; //一对多关系的主数据表等级错误
elookuperr=9736; //字段值超出lookup范围
elookupopenerr=9737; //lookup数据表打开失败
edetailopenerr=9738;//一对多关系的子数据表打开失败
emasteropenerr=9739;//一对多关系的主数据表打开失败
efieldisblank=9740;//字段是空的4、函数代码
Procedure MyDBError(E: EDatabaseError);
var
idberror:integer;
begin
if (E is EDBengineError) then
begin
idberror:=(E as edbengineerror).errors[0].errorcode;
//showmessage(inttostr(idberror));
case idberror of
erequiredfieldmissing:
begin
Application.MessageBox('关键字不能为空,请重新输入!','错误', MB_OK );
exit;
end;
ekeyviol:
begin
Application.MessageBox('编号重复,请重新输入!','错误', MB_OK );
exit;
end;
end;
end;
end;不够的话自己再扩充