我看书append是在数据库最后增一条纪录
insert是在当前插入一条纪录但我用起来怎么两种方法都是一样的,都是在最后新增加一条纪录,那怎样才能在当前插入一条纪录呢?

解决方案 »

  1.   

    是指 Query 控件吧如果你的当前位置是 EOF ,就是表的末尾,那当然就一样了当前位置在哪里,INSERT 就插在哪里,用 next、prior 移动位置
      

  2.   

    用adoquery
    当前不是EOF,我在DBGrid1中直接移动指针到中间再用这两种方法, 但效果还是一样的
      

  3.   

    是一样的,都是从tdataset继承的。所以query和table都是一样的。
    procedure TDataSet.Insert;
    var
      Buffer: PChar;
      OldCurrent: TBookStr;
    begin
      BeginInsertAppend;
      OldCurrent := Book;
      MoveBuffer(FRecordCount, FActiveRecord);
      Buffer := ActiveBuffer;
      InitRecord(Buffer);
      if FRecordCount = 0 then
        SetBookFlag(Buffer, bfBOF) else
        SetBookData(Buffer, Pointer(OldCurrent));
      if FRecordCount < FBufferCount then Inc(FRecordCount);
      InternalInsert;
      EndInsertAppend;
    end;procedure TDataSet.Append;
    var
      Buffer: PChar;
    begin
      BeginInsertAppend;
      ClearBuffers;
      Buffer := FBuffers[0];
      InitRecord(Buffer);
      SetBookFlag(Buffer, bfEOF);
      FRecordCount := 1;
      FBOF := False;
      GetPriorRecords;
      InternalInsert;
      EndInsertAppend;
    end;
      

  4.   

    如果你进行了查找,定位这样的操作 ,append和insert的位置就该有区别了,当前位置是光标所在的位置,你执行了查询,在插入,应该不是出现在结尾的
      

  5.   

    但我什么也没用过呀,数据库没做索引,SQL语句是这样的select * From tablename没有排序呀