我在DbGrid中增加了好几条记录,但其中有一个字段的值是不能重复的,我怎么在保存时用程序来判断他是否重复,请注意这些增加的值还在客户端的数据集中?谢谢?

解决方案 »

  1.   

    你的数据库设置主键了么?如果有,那么可以try一下来截获异常,进行处理!
      

  2.   

    如果你没有设置主键,很明显你要用语句查找数据库中是否已有这个值了。用LOCATE 方法或SQL SELECT语句不过这样的效率肯定很低的。最要还是用键吧。
      

  3.   

    procedure Thisykypxxwh.DBGrid1ColExit(Sender: TObject);
    var i:integer;
        valuestr:string;
        error:boolean;
    begin
    i:=dbgrid1.SelectedField.Index;
    valuestr:=dbgrid1.Fields[0].AsString;adoquery4.Filtered:=false;if(radiobutton14.Checked and radiobutton8.Checked)then
       adoquery4.SQL.Add('select bm  from cldw ');
    adoquery4.open;adoquery4.Filter:='bm='+''''+valuestr+'''';
    adoquery4.Filtered:=true;
    if(adoquery4.RecordCount>0)then
      begin
       application.MessageBox('该字段值不能重复!','提示',mb_ok);
       adoquery2.edit;
       dbgrid1.Fields[0].Value:=null;
       exit;
      end;
    end;
    稍加修改!!!!