假设adoquery1中有字段:产品代码,产品名称等等
我的dbgrid只是用来浏览,而用dbedit1,dbedit2等等来修改,问题是我怎么样保证我在dbedit1里修改的代码和表中不能有重复?

解决方案 »

  1.   

    用下面语句:
    ADOQuery1.fieldbyname('字段').asstring:=dbedit1;
      

  2.   

    我的程序里有些特殊的地方,不能用这用方法,因为我的字段名总体是允许重复的,但在某个动态的adoquery1中不允许重复,所以不能用捕捉错误信息的方法。
    能否有其它方法?
      

  3.   

    在修改前加一条判断语句
    if not locate(fieldname,edit1.text,[]) then
    begin
      //进行修改操作
    end; 不知道可不可以,
      

  4.   

    问题是事件放在那儿?
    我碰到的问题是:
    在dbedit中修改了内容,再把鼠标在dbgrid中一点,就进去了
    根本不用post
    根本来不及检测呀!
      

  5.   

    你可以把DBGRID设成只读的呀,或者在adoquery的字段里设只读的
      

  6.   

    看看有没有帮助,你可以做一个判断,如果填入的内容edit1.text在数据库中存在就‘怎么样'
    没有就'怎么样'不过可能比较费时间,这段代码你应该看的懂
    procedure TForm1.Button1Click(Sender: TObject);
    var str: string;
    begin
       str:='select * from ypxx where ph='+Edit1.Text;   AdoQuery1.Close;
       AdoQuery1.SQL.Clear;
       AdoQuery1.SQL.Add(str);
       AdoQuery1.open;   AdoQuery1.First;
       if adoQuery1.Eof then
       begin
        showmessage('有了');
       end;end;还有就是把DBGRID设成只读,比较好
      

  7.   

    我的DBGRID本身就是只读的呀!它只是用来显示的
    我的意思是:dbedit中修改内容后又两种方式存进数据库
    1,直接用post
    2,只要在dbgrid中换行(换行就默认了post)
    那么,象第二种形况,我根本来不及检测它就进数据库,检测了有重复也没用