bde的数据库错误可以这样处理传统的数据库错误处理都是由程序员自行控制处理(像是Clipper,VFP,dBase)﹐例如﹐使用者新增一笔客户资料之后﹐程序必须先去数据库寻找是否有相同客户代码的资料﹔如果有﹐则资料不写入数据库﹐并且显示错误讯息告诉使用者重新输入一遍﹔如果没有﹐才写入数据库中。这种传统的写法将得使程序中到处都有错误处理的程序﹐造成系统维护上的麻烦。而在主从架构的系统下﹐这些资料正确性的判断工作﹐都可交由后端的数据库系统来完成。比如, 有关于Constrain数据的问题﹐所要应用的就是利用Constrain数据库来判断數據写入的正确性﹐当写入数据库时﹐数据库系统会自行检查数据的唯一键值(primary key)字段是否有重复的情况﹐如果有﹐系统本身将产生一个例外错误讯息﹐而且不会把数据写入数据库内。这里我们将拦截后端数据库系统产生的例外错误码﹐藉此建立整个项目的错误处理功能。procedure TDM.CustomerPostError(DataSet:TdataSet; E:EdatabaseError; Var Action:TDataAction);
begin
if (E is EDBEngineError) then
if (E as EDBEngineError).Errors[0].ErrorCode=9729 then begin
MessageDlg(‘客户编号重复﹐请重新输入﹗’,mtWarning,[mbOK],0);
abort;
end;
end;
end;那么用ADO作的数据库程序该怎么处理呢??????//

解决方案 »

  1.   

    ADOConnection.Errors.Description;//得到错误信息
    ADOConnection.Errors.Count;//得到错误总共又多少
    ADOConnection.Errors.Item[]//第几条 错误
      

  2.   

    说实在的我没有做过...但是,ADOQUERY下面有
    onPostError
    onEditError
    之类的事件你可以使用啊..
      

  3.   

    怎么去掉ado的本声提示的错误呢?
    我都用try except捕捉错误,并做出自己的提示错误信息,可是还会显示ado的提示。怎么去除呢?
      

  4.   

    leobearcn(七月流火):“我都用try except捕捉错误,并做出自己的提示错误信息,可是还会显示ado的提示。”不会啊!