有个单据表, 我象在明细里插一条记录(adodataset.insert)   可是一post后就跑到最后一条去了 
该怎么弄才能让这条数据在插入的那个位置?  

解决方案 »

  1.   

    我这明细表有个nIndex的字段用来控制顺序,  所以 只要数据在内存里能在某一行的前面就可以了  
    可是不管是append还是insert  只要post后就跑到最后一行去了, 有办法解决吗?(除UpdateBatch后再调整的方法外,这样对我来讲没有意义)
      

  2.   

    已经加了排序列
      我是说在录单据还没提交到数据库那时候的顺序   用adodataset.insert是可以在中间插一条记录  可以一post就跑到网格的最后一行了      
      

  3.   

    感觉应该是adodataset的commandtext的排序问题去掉排序的属性试试
      

  4.   

    如果用sql的insert肯定去后面了,
    用table控件的insert试试
      

  5.   

    无论你用哪个控件来做插入操作,都是在最后。 错的
    你要先用locate定位到你要插入的地方,
    然后insert
    在post
    即可!
      

  6.   

    参考代码:Procedure TForm1.FormCreate(Sender: TObject);
    Var
      lfd_FieldDef: TFieldDef;
    Begin
      ds := TClientDataSet.Create(Nil);
      lfd_FieldDef := ds.FieldDefs.AddFieldDef;
      lfd_FieldDef.Name := 'ID';
      lfd_FieldDef.DataType := ftString;
      lfd_FieldDef.Size := 8;
      ds.CreateDataSet;  ds.Append;
      ds.FieldByName('ID').AsString := '1';
      ds.Post;  ds.Append;
      ds.FieldByName('ID').AsString := '2';
      ds.Post;  If ds.Locate('ID', VarArrayOf(['1']), []) Then
      Begin
        ds.Insert;
        ds.FieldByName('ID').AsString := '0';
        ds.Post;
      End;  DataSource1.DataSet := ds;
    End;