估计没有,只有你在输入产品名称后先对数据库中进行查询,要是已经存在的产品名就报非法产品名。
估计这也是唯一的办法!/*************************************/
/*1、MY TOOL:*************************/
/*2、Delphi,Oracle,Sybase,C++/C*******/
/*3、PROJECT:*************************/
/*3、Boss*****************************/
/*4、为了五星的目标希望你早点结贴*********/
/*5、在线技术讨论(QQ):68123095*********/
/*************************************/

解决方案 »

  1.   

    开始你不限制产品名呀,等它输完你先检查表里面是否已经存在该名,要是存在就报错误,要是不存在你就入库了!
    /*************************************/
    /*1、MY TOOL:*************************/
    /*2、Delphi,Oracle,Sybase,C++/C*******/
    /*3、PROJECT:*************************/
    /*3、Boss*****************************/
    /*4、为了五星的目标希望你早点结贴*********/
    /*5、在线技术讨论(QQ):68123095*********/
    /*************************************/
      

  2.   

    事件:Table1.OnUpdateError:新增:
    File->New->Other->Dialog->Reconcile Error Dialog:
    procedure TForm1.Table1UpdateRecord(DataSet: TDataSet;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    begin
      HandleReconcileError(DataSet,UpdateKind,E);
    end;
      

  3.   

    在Table 的OnPostError中写
    procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    begin
        //判断E的错误类型,如果是PK重复着
        Application.MessageBox('错误!此产品已经存在请输入其他名称或取消操作.','错误',MB_ICONERROR+MB_OK );
        Abort;
    end;
      

  4.   

    错了错了,应该是在OnUpdateError事件中:procedure TForm1.Table1UpdateError(DataSet: TDataSet; E: EDatabaseError;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    begin
      HandleReconcileError(DataSet,UpdateKind,E);
    end;
      

  5.   

    事件:Table1.OnUpdateError:
    if (E is edbengineerror) then
       if (e as edbengineerror).errors[0].errorcode=9729 then
          begin
             messagebox.......//产品名重复
          end;
      

  6.   

    有错误:[Error] danweijibenxinxi.pas(50): Undeclared identifier: 'HandleReconcileError'
      

  7.   

    1、产品名设为主键
    2、不要用DBGrid,改用非数据敏感控件,例如Edit,Memo
    3、在Table的 PostError事件中写:
    if (E is EDBEngineError) then
    case (E as EDBEngineError).Errors[0].ErrorCode of
    9729:
    begin
      messagedlg('关键字重复',mtWarning,[mbOK],0);
      Aborts
    end;