try
   post;
except
   messagebox(...);
end;

解决方案 »

  1.   

    在BeforePost中加入判断,成功Post,否则Cancel。
      

  2.   

    我同意cjf的意见,但有些困难。
    因为判断就要查找其他记录,必然要引起Table的Scroll事件。
    最好还是将编码给事先记录下来。
      

  3.   

    在TDataSet.BeforePost(DataSet: TDataSet)事件中加入
    begin
      if {出现重码} then begin
        (*//
        如果直接用处理会出现记录锁定
        自己写一消息函数处理,提示用户并把错误数据清除
        //*)
        DataSet['编码'] := FormatDateTime('''#''s', Time) + Format('%d', Random(99)) {当前唯一};
        SendMessage(Handle, MY_MESSAGE, 0, 0);
      end;
    end;
    //如果不清楚我就把全部代码写出OK
      

  4.   

    如果是Ms Access97数据库就方便了,
    可以在Access97中将一字段定义成一个
      

  5.   

    如果是Ms Access97数据库就方便了,
    可以在Access97中将一字段定义成一个
    不允许重复的索引字段,一旦"重复"出现了
    就可捕捉到OnPostError(...)的事件,
    在事件中令Action=daAbort;
      

  6.   

    zswang 我确实不清楚,劳您大驾写出全部代码!
      

  7.   

    应在OnpostError中进行控制:var
      ErrorMessage:string;
    begin
       ErrorMessage:='';
       if (Pos('Key',E.Message)>0) then ErrorMessage:='编码不能重复,请修改!!';
       MessageDlg(ErrorMessage,mtError,[mbOk],0);
       Action:=daAbort;
    end;