大家好,我用adoquery把记录放入临时表中,再通过一个 checkbox判断状态,选中了的就删除,下面是我的删除语句
    Queryreceivables.DisableControls;  with Queryreceivables do
begin
first for i:=1 to RecordCount+1 do
  begin
  if FieldValues['state']=true  then
    Delete;
    next;
  end;
end
Queryreceivables.EnableControls ;FieldValues['state']是checkbox类型的
现在就是我如果最后一跳记录如果没选中的话,执行以上语句就会留下一跳我打钩了的记录没删除
请问大家有什么解决方法

解决方案 »

  1.   

    for i:=0 to RecordCount-1 do
      

  2.   

    楼主啊,你的循环写的有问题吧,能执行吗,你这样写呢
    Queryreceivables.DisableControls; 
    with Queryreceivables do 
    begin 
    first while not RecordCount.eof do 
      begin 
      if FieldByName('state').AsBoolean = true then 
        Delete; 
        next; 
      end; 
    end Queryreceivables.EnableControls ; 
      

  3.   

    while not RecordCount.eof do 
      begin 
      if FieldByName('state').AsBoolean = true then 
        Delete
      else 
        next; 
      end; 
    end 
      

  4.   

    没有FieldByName('state').AsBoolean 方法啊各位!
      

  5.   

    楼主的循环好像写的有点问题,如果找到了打钩的才会next一次,如果没找到就不往下执行了改成
      with Queryreceivables do 
    begin 
    first for i:=1 to RecordCount do 
      begin 
      if FieldValues['state']=true  then 
        Delete; 
      end;
      next;  
    end 
    Queryreceivables.EnableControls ; 
      

  6.   

    执行了delete 就不要 next 了
      

  7.   

    给你个参考的,不知道可不可以,我这个是日期为空的删除,不为空的不删除。var
      BM: TBookStr;//定义变量
       try
             cds_NWSampleBal_I.First;
       while not cds_NWSampleBal_I.Eof do
            begin
        if cds_NWSampleBal_I.State in [dsEdit,dsInsert] = False then cds_NWSampleBal_I.Edit;
        begin
           if (cds_NWSampleBal_I.FieldByName('SPOUT_DATE').AsString = '') then
            cds_NWSampleBal_I.Delete
            else
            cds_NWSampleBal_I.Next;        end ;
            end;
      finally
        cds_NWSampleBal_I.First;
        cds_NWSampleBal_I.Book := BM;
        cds_NWSampleBal_I.EnableControls;
      end; 
      

  8.   

    执行了delete 就不要执行 next 了,应该把代码改为:
    Queryreceivables.DisableControls;   with Queryreceivables do 
    begin 
    first for i:=1 to RecordCount+1 do 
      begin 
      if FieldValues['state']=true  then 
        Delete 
       else
        next; 
      end; 
    end;
    Queryreceivables.EnableControls ; 
      

  9.   


    Queryreceivables.DisableControls; 
    with Queryreceivables do 
    begin 
      first 
      While not eof do 
      begin 
      if FieldValues['state']=true  then 
        Delete
      else
        next; 
      end; 
    end 
    Queryreceivables.EnableControls ;