如何用adoquery的delete方法删除access的多条记录?
begin
  adoquery1.first;
  for i:=0 to adoquery1.recordrsetcount-1 do
      begin
        adoquery1.delete;
        adoquery1.next;
      end;
这样删除为何死机或删除不了记录?不信大家帮我调一调?
还有没有更好的方法,请教.谢谢!

解决方案 »

  1.   

    query的查询是简单表的查询吗?
    如果有关联或者是没有主键是不能删除的。
      

  2.   

    adoquery1.first;
      for i:=0 to adoquery1.recordrsetcount-1 do
          begin
            adoquery1.delete;   //删除后指针会移动
            adoquery1.next;
          end;
    你这样删除,肯定会死机的。看看这个吧。(*//
    标题:Delphi中建议使用的语句
    整理:Zswang
    连接:http://www.csdn.net/Expert/TopicView1.asp?id=724036
    日期:2002-06-22
    支持:[email protected]
    //*)
    { No.6 遍历数据集 }
    var
      I: Integer;
    begin
      Query1.First;
      for I := 0 to Query1.RecordCount - 1 do begin //不建议//容易被影响
        Query1.Next;
        {};
      end;
    /////
      Query1.First;
      while not Query1.Eof do begin //建议
        {  }
        Query1.Next;
      end;
    end;
      

  3.   

    楼上说的对压,看看你的adoQuery的select语句把
      

  4.   

    改成这样试试:
    begin
      adoquery1.first;
      for i:=0 to adoquery1.RecordCount-1 do
          begin
            adoquery1.delete;
            adoquery1.next;
          end;
      

  5.   

    with ADoquery1 do
    begin
      Close;
      SQl.Clear;
      SQL.Text := 'delete ..........';
      ADoquery1.ExecSQL
    end;
      

  6.   

    改为如下:
    adoquery1.first;
    while not adoquery1.eof do
      adoquery1.delete;还是直接写sql语句删除好,delete from tablename where ......
      

  7.   

    为什么不直接写SQL语句,用了Query控件却要一条条的删除,有什么理由吗?
    强烈建议使用一条SQL语句搞定它
      

  8.   

    通过传递delete 语句
    然后execsql删除