ado控件自身就有很多error事件的。
不过bde控件我没有用过。

解决方案 »

  1.   

    ado具备有自身的error对象,直接查找delphi的帮助就可以找到!
      

  2.   

    TAdo也有自己的Error处理机制;
      

  3.   

    ado对象有个errors对象集合。他是一个层次结构。你可以查找一些常见的错误号
    来捕获。
      

  4.   

    procedure Tform1.adodatasetposterror(..);
    var theerrors:errors
        theerror:error;
        i:integer;
    begin
    theerrors:=adoconnection1.errors;
    for i:=0 to theerrors.count-1 do
    begin
      theerror:=theerrors.item[i];
      listbox1.items.add('error number:'+inttostr(theerror.number));
      listbox1.items.add('error source:'+theerror.source);
      ........
    end;
    end;
    这是我在书上抄的一个例子,可以看出与ado有关的错误被封装到了adoconnection.errors中,其它错误仍然可以通过E得到
      

  5.   

    yes,有ado一样有,很多书上都有讲的----
      

  6.   

    eagle123(孤独的鹰):theerrors.count=0,什么原因呀?与ADO升级包没有关系吧。我没升级ADO。
      

  7.   

    看看李维的书: <<Delphi 5.x ADO/MTS/COM+ 高级程序设计篇>>
      

  8.   

    ado 一样可以拉返回数据库的错误编码在POSTERROR事件中可以捕捉,
    下面的是我们工程的部分代码。SQLSERVER 2000库
    procedure TEmpInfoFrm.EmpDataSetPostError(DataSet: TDataSet;
      E: EDatabaseError; var Action: TDataAction);
    Var
      ADOErrors:Errors;
    begin
      Action:=daAbort;
      adoErrors:=mainform.ado_connect.Errors;
      //Showmessage(IntToStr(adoErrors.Item[0].Number));
      if adoErrors.Item[0].Number=-2147217873 then
        Application.MessageBox(Pchar('员工编码:'+DataSet.FieldByName('cEmpCode').asString+'重复'),'保存记录',MB_OK+MB_ICONINFORMATION);
      if adoErrors.Item[0].Number=-2147217864 then
      begin
        Application.MessageBox('本记录已被其他用户修改','保存记录',MB_OK+MB_ICONINFORMATION);
        EmpDataSet.Cancel;
        EmpDataSet.Refresh;
      end;上分吧!
      

  9.   

    我觉得ADO的错误处理要多得多,一句话都说不清楚,
    ERROR本身就是ADO所包含的一个对象,
    先看看ADO有关的书吧