现在我做的是这样
//增加按钮的过程
procedure TFormBasicSet.ToolButton2Click(Sender: TObject);
begin
   adoquery1.Append;
end;
但我想在DBGrid的当前游标下插入一个记录,代码怎么写?

解决方案 »

  1.   

    adoquery1.Insert;注:实际效果在重新打开数据集后与Append是一样的,除非你自己排序。
      

  2.   

    就是,和Append是一样的。那自己排序又该怎么弄呢?
    是不是得把数据集当前记录后面的都移一位再在当前位插入。这样做很麻烦啊
      

  3.   

    insert和append不同的只是在DBGrid 插入的地方不同;
    在beforinsert之前确定你的ID,以ID排序就行
      

  4.   

    比如有这么个表
               ID          Name
               1           pig
           ->
               2           dog我想在ID为1地方插入wolf,那应该为2  和  wolf  ,那在DBGrid怎么获得当前游标的ID,
    还有dog的ID要变成3,下面的累加,具体该怎么做?说点具体的谢谢!!
      

  5.   

    adoquery1.Next;
    adoquery1.Insert ;
      

  6.   

    var id:variant;
    begin
      with adoquery1 do
        begin
          //获取编号
          prior;
          id:=fields[0].AsInteger+1;
          //添加记录
          append;
          fields[0].AsInteger:=id;
          fields[1].AsString:='wolf';
          post;
          //更改其后编号
          while not eof do
            begin
              inc(id,1);
              edit;
              fields[0].AsInteger:=id;
              post;
              next;
            end;
        end;
    end;
      

  7.   

    最现实的解决方案,将id变成numeric,在你的应用中如果要1和2中插入,就插入,(1+2)/2的值就行了,再插,就(1+1.5)/2了,明白我的意思吧,浮点数不是ordinal嘛