这样始终不能得到正常结果:ADOQuery1.Sort:='id';代码:
ADOQuery1.Append;
ADOQuery1.FieldByName('id').Value:='02';
ADOQuery1.Append;
ADOQuery1.FieldByName('id').Value:='01';
ADOQuery1.Append;
ADOQuery1.FieldByName('id').Value:='03';
ADOQuery1.Sort:='id';//有了此句就出问题了若不要ADOQuery1.Sort:='id';这一句,结果为:02、01、03
加上ADOQuery1.Sort:='id';后按理应该得到:01、02、03,却得到了:01、01、02,把我的数据给改了到底应该如何排序?

解决方案 »

  1.   

    adoquery1.close;
    adoquery1.open;
    ADOQuery1.Sort:='id';
      

  2.   

    ADOQuery1.Open;
    ADOQuery1.Sort:=' id ASC';//升序  
    ADOQuery1.Sort:=' id DESC'//降序
      

  3.   

    我的数据appendl了还没有提交,所以还不能open后排序是这样的:我打开数据集(这时的数据是有序的,因为我用了order by),增加了几个数据(无序)后要重新排序(还未提交),就成上面的结果了
      

  4.   

    很少用这个;一般SQL语句就处理了;
    还有,你ORDER BY 以后的DATASET也许POST数据的时候有问题;
      

  5.   

    老大,我还没有post啊(应该是UpdateBatch),我是append了几个数据然后sort,还没有UpdateBatch
      

  6.   

    ADOQuery1.Append;
    ADOQuery1.FieldByName('id').Value:='02';
    ADOQuery1.Append;
    ADOQuery1.FieldByName('id').Value:='01';
    ADOQuery1.Append;
    ADOQuery1.FieldByName('id').Value:='03';
    ADOQuery1.post;
    ADOQuery1.Sort:='id';
      

  7.   

    你不Post or UpdateBatch就进行Sort当然不对了,先Post or UpdateBatch一下。
      

  8.   

    哎,上面的为什么都要我Post or UpdateBatch,我不要提交啊
      

  9.   

    自己搞定了:
    ADOQuery1.First;
    ADOQuery1.Sort:='id';为什么非要把记录指针移到第一条记录才能排序?ADOQuery的排序机制是什么?
      

  10.   

    你可以使用Post来保存数据,然后调用ADOQuery.UpdateBatch.(设置ADOQuery.lockType:=[ltBatchOptimistic];)整体提交到数据库中。
    这样就避免了数据级Append不能排序的问题。
      

  11.   

    设置ADOQuery.lockType:=[ltBatchOptimistic];
    調用post是不會提交數據的﹐只是暫存。
    ADOQuery1.Append;
    ADOQuery1.FieldByName('id').Value:='02';
    ADOQuery1.Append;
    ADOQuery1.FieldByName('id').Value:='01';
    ADOQuery1.Append;
    ADOQuery1.FieldByName('id').Value:='03';
    ADOQuery1.post;
    ADOQuery1.Sort:='id';
      

  12.   

    不晚:为什么非要把记录指针移到第一条记录才能排序?ADOQuery的排序机制是什么?