谢谢!请救援!!!

解决方案 »

  1.   

    自己用locate设定,如果找到该条记录showmessage,而后cancel....
      

  2.   


    这样做有问题吗?begin
      if table1.Locate('sid',edit3.text,[locaseinsensitive])=true then
        showmessage('dfd')
      else
        table1.Append;
      

  3.   

    你这做也可以。
    使用定位时,不过这只适合用于数据表只有一个关键字段,如数据表是由组合关键字段组成
    你还得用SQL语句去查询!
      

  4.   

    在table的beforpost事件中做测试,如果已经有了相同的值,取消,并且给用户提示
      

  5.   

    const
      eKeyViol=9729;//主键重复时的错误码值
    procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    begin
    if (E is EDBEngineError) then
      if(E as EDBEngineError).errors[0].Errorcode=eKeyViol then
      begin
        action:=daAbort;//中断程序执行
        dataset.Cancel;    showmessage('不能重复');
      end;
    end;你可以用单击一下table的PostError事件,按F1 那里有详细的介绍