请问在删除一条记录后,怎样重新对记录排序???
  我用adoquery做删除操作,用adotable做重新排序操作。在执行过程中出现的错误提示是 ‘cannot perform this operation on a closed dataset’ ,请问我的代码该如何修改,或者有什么更好的办法来实现。
  我用的代码是
  procedure TForm1.Button7Click(Sender: TObject);
begin
         pos:=ADOQuery1.FieldValues ['tihao'];
         count:= ADOTable1.RecordCount -1;
         ADOQuery1.Delete ;         ADOTable1.First ;
         for j:=1 to count  do
          begin
            if    ADOTable1.FieldByName ('tihao').AsInteger  = ADOQuery1.FieldByName ('tihao').AsInteger
            then
              begin
               for i:=pos  to  count   do
                 begin
                 ADOConnection1.Open ;
                 ADOTable1.Open ;
                 ADOTable1.Edit  ;
                 ADOTable1.FieldByName('tihao').AsInteger :=i;
                 ADOTable1.Next ;
                 end;
              ADOTable1.Refresh ;
              ADOQuery1.Active :=false;
              ADOQuery1.Active :=true;              end
            else
             begin
               ADOTable1.Next ;
             end;
          end;
        end;end;

解决方案 »

  1.   

    在ADOTable1.First ;加上ADOTable1.open;
      

  2.   

    避免用ADOTAble,应该用ADOQuery。
      

  3.   

    我的也出现过这个问题,解决了告诉我,谢谢 
    [email protected]
      

  4.   

    tpmao:
         我试过了,还是不行.samcrm:
         我开始是用aodquery的,也是出现这个问题,所以才改用adotable的.
      

  5.   

    samcrm(阿靖) 说的对,应该用ADOQuery,用SELECT FROM ORDER BY ...这样SQL语句来更新数据,每次只需要重新Open就可以排序。
      

  6.   

    fengron:
         我是想使字段值重新排列成递增,用SQL语句实现不了。
      

  7.   

    1.最好是用ADOQuery
    2.语句最前面应有ADOTable1.open;以及ADOQuery1.open;
      

  8.   

    adoquery可以呀.
    将PREPARED设为TRUE就可以修改了.
      

  9.   

    我用了adoquery.delete来进行删除,问题可以解决了。谢谢各位的指点。