建议使用query控件,代码如下:
query1.close;
query1.sql.clear;
query1.sql.add('select * from db where namea=''''');
query1.open;
for i:=1 to query1.recordcount do (*我忘了delphi中的总计录属性是什么,反正不是recordcount就是reccount*)
begin
    query1.delete;
    query1.next;
end;

解决方案 »

  1.   

    你的代码中的问题出在next这一句上。
    试想一下,如果你删掉了纪录3,那么原来的记录4就变成了记录3了,但是你要了next之后,指针就直接指向了删除后的记录4,也就是原来的记录5,记录4被忽略了,所以不能这样做。table1.last;
    while not query1.bof do
    begin
      if (table1.fieldbyname('namea').asstring='') then
      table1.delete;
      table1.prior;
    end;
      

  2.   

    建议直接使用delete from tablename where con1 = ''
    在query.sql.add(delete from tablename where con1 = ''
    )
    execsql就ok 
      

  3.   

    使用下面语句删除时,当表内有10条记录时,其中最后8条的namea为空记录时,是这样删除的过程:先删除第10条,下面就删除第8条了,第9条记录(当然是空记录了)就是不能删除,不知道什么原因。我主要是想删除namea这个字段为空的所有记录,可怎么都找不出最好的方法,请各位帮助!在些谢谢了!
    table1.last;
    while not table1.bof do
    begin
      if (table1.fieldbyname('namea').asstring='') then
      begin
      table1.delete;
      end;
      table1.prior;
    end;
      

  4.   

    with Query1 do
    beign
     Query1.Close;
     Query1.Clear;
     Query1.Add('delete * from Tabel where namea is null');
     Query1.ExecSQL;
    end;就是这个意思。