我用ADOTABLE连接库,然后在form是有一个dbgrid,datasource,dbedit控件,这几个控件相连,dbedit的datasource,datafiled都连接好,我现在的新增代码如下:
    DataModule1.tbl_tail.insert;
    edtmath.SetFocus;
保存代码如下:
 if DataModule1.tbl_mirror.Locate('mirrorsort',trim(edtmath.Text),[]) then
    begin
       application.messagebox('表内已有重复记录,不能存盘!', '提示', MB_OK+mb_iconwarning);
       abort;
    end else
    begin 
       screen.Cursor:=crhourglass;
       DataModule1.tbl_tail.Post;
       edtmath.SetFocus;
       btnadd.Enabled:=true;
       btnedit.Enabled:=true;
       btndele.Enabled:=true;
       btnundo.Enabled:=false;
       btnsave.Enabled:=false;
       btnclose.Enabled:=true;
       screen.Cursor:=crdefault;
  end;
但我每次按了新增之后,然后在dbedit中编辑数据之后,按保存按钮,总是会出现
表内已有重复记录,不能存盘!的提示框,但我的新增记录却实没重复,我在想是不是当dbedit中编辑的时候就已经把数据存到库里面了呢?如果是那样,那怎么解决呢?

解决方案 »

  1.   

    原因:在执行这条语句‘DataModule1.tbl_mirror.Locate('mirrorsort',trim(edtmath.Text),[]) ‘的时候,系统会自动执行数据集post语句,所以你的数据集中也就有了该条语句。解决办法:如果你要判断的字段是主键的话可以用 TABLE1.FindKey
    2:直接在程序中写sql 语句
      

  2.   

    3.或者先用它DataModule1.tbl_mirror.Locate进行判断,如果没有记录在执行数据集插入操作。
      

  3.   

    3.或者先用它DataModule1.tbl_mirror.Locate进行判断,如果没有记录在执行数据集插入操作。
      

  4.   

    具体在什么事件中写代码啊?我在beforePost中写过,但运行老出错