在delphi 中
用adotadaset访问数据库
_________________________________________________________________________
Project NewHelpKsf.exe raised excption class EOLeException with message
'ORA-00001:违反唯一约束条件(KSFUSER.SYS_C002723)'.Process stopped.Use
Step or Run to continue.
_________________________________________________________________________
这个错误怎么捕获?
换成自己定义的错误.

解决方案 »

  1.   

    我也遇到过!
    你这样试试!
    try
      ……
    except
      on E: Exception do
       if e.Message = 'ORA-00001:违反唯一约束条件(KSFUSER.SYS_C002723)' then
         ……
      

  2.   

    那你在ADODataSet的OnPostError事件里写上
    action := daabort;
    application.MessageBox('保存出错!!','提示',0);
    ADODataSet.Cancel();
      

  3.   

    程序是这样的:  //添加保存
      try
        ADODataSet.UpdateBatch();
      except
        on E:Exception  DO
         if e.Message  = 'ORA-00001:违反唯一约束条件(KSFUSER.SYS_C002723)' then
          showmessage('input again!');
      end;但是程序跟踪的结果显示,在进入except之前就出现如前所述的错误,
    很困惑我。我仅仅想屏蔽这个错误,给出自己的提示。
    谢谢!
      

  4.   

    程序如小齐所说:
    procedure TFormTransctionDefine.BitBtnSaveClick(Sender: TObject);
     begin
     if  dsTransction.State in [dsInsert]  then
      begin
        dsTransction.UpdateBatch();
      end;
    end;procedure TFormTransctionDefine.dsTransctionPostError(DataSet: TDataSet;
      E: EDatabaseError; var Action: TDataAction);
    begin
      action :=daabort;
      application.MessageBox('保存出错','提示',0);
      dsTransction.Cancel;
    end;但是出错时程序走不进来。
    是不是还有什么缺陷,请指正!谢谢!
      

  5.   

    但是程序跟踪的结果显示,在进入except之前就出现如前所述的错误,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~
    证明错误并不是ADODataSet.UpdateBatch();发出的
    将你的dataset修改/插入等操作全部写入try...except最好用error的id判断,而不是message
      

  6.   

    不在Delphi环境下,应该可以屏蔽
      

  7.   

    用数据库的监视器?
    是写oracle的过程么?
    我是想在delphi里控制
      

  8.   

    你直接运行*.exe看看,不在Delphi环境下
      

  9.   

    我仅仅作了这一个操作。
    ADODataSet.Append;
    之后
    ADODataSet.UpdateBatch();
    而且程序是运行到这里出的错。
      

  10.   

    谢谢!
    用 readersm68(地主) 的方法,以上两种都好用。谢谢!分少,
    readersm68(地主) :40
    bluecyclone(永远的小学生) :30
    qixin000(小齐) :30firetoucher(风焱) 在另外一个给吧