procedure Tfrm_company.btn_deletedClick(Sender: TObject);begin
 if  messagebox(handle,PChar('确定删除当前记录吗?'),PChar('删除'),MB_YESNO+MB_ICONINFORMATION)=IDYES then
   begin
      edit1.Text:='';
      edit2.Text:='';
      edit3.Text:='';
      edit4.Text:='';
      edit5.Text:='';
      edit6.Text:='';
      edit7.Text:='';
      edit8.Text:='';
      edit9.Text:='';
      edit10.Text:='';
      edit11.Text:='';
      edit12.Text:='';
      edit13.Text:='';
      edit14.Text:='';
      edit15.Text:='';
      edit16.Text:=inttostr(adoquery1.RecNo -1)+'/'+inttostr(adoquery1.recordcount-1) ;
      if adoquery1.recno<>-1 then adoquery1.deleterecords(arCurrent);
    end
end;procedure Tfrm_company.btn_copyClick(Sender: TObject);
begin
  adoquery1.Close;
   adoquery1.SQL.Clear;
   adoquery1.SQL.Text:='insert into Company(DWMC,DWMCE,DWDZ,DWDZE,FRDB,LXR,YZBM,KHYH,YHZH,CZHM,LXDH,DC,DBGH,DZYX,BZ) values('''+edit1.Text+''','''+edit2.text+''','''+edit3.text+''','''+edit4.text+''','''+edit5.text+''','''+edit6.text+''','''+edit7.text+''','''+edit8.Text+''','''+edit9.Text+''','''+edit10.text+''','''+edit11.text+''','''+edit12.text+''','''+edit13.text+''','''+edit14.text+''','''+edit15.text+''')';
   adoquery1.ExecSQL;
   adoquery1.Close;
   adoquery1.SQL.Clear;
   adoquery1.SQL.Add('select * from Company');
   adoquery1.open;
   edit16.Text:=inttostr(adoquery1.RecNo)+'/'+inttostr(adoquery1.RecordCount);end;在复制了多条相同的记录之后,删除时报错说键列信息不足或不正确,删除影响到过多行。
数据是被删除了,但删除的不仅仅是当前的记录,而是所有复制的和被复制的都删除了。不知如何解决,请各位高手指教

解决方案 »

  1.   

    if adoquery1.recno<>-1 then adoquery1.deleterecords(arCurrent);
    改成:
    if adoquery1.recno<>-1 then adoquery1.delete;
      

  2.   

    你用的是sql server数据库吧,好像在sql server 数据库中出现相同的记录,就是会把所有的相同记录删除
      

  3.   

    问题已经解决,但是否ADOquery不能用delete来删除完全相同的记录(超过三条)
    请前辈们指教。。
      

  4.   

    我是在表中添加了一个标识字段,达到记录不重复的目的后成功解决问题已经解决,但是否ADOquery不能用delete来删除完全相同的记录(超过三条)
    请前辈们指教。。
      

  5.   

    这不是adoquery的问题,应该时数据库方面的问题,删除时如果发现完全相同的记录即重复记录,数据库会报错