如题,谢谢!

解决方案 »

  1.   

    AdoDataSet可以使用Clone方法把整个数据集克隆过去,然后按原先的Filter条件,过滤出你要的数据。
      

  2.   

    我想过这个办法的,但是这样数据量太大了。
    还有filter以后一个一个拷过去,那样又觉得太慢了……
      

  3.   

    对阿,克隆干什么
    用sql直接从数据库取,然后只要保持两个数据集同步就可以了,也就是说一个数据集刷新后,另一个也跟着执行刷新
      

  4.   

    按你的思路 基本上只能从数据库重新取
    有个小技巧首先把原本的FILTER的拿出来
    然后把原本的SQL语句包一层 最后在后面加个WHERE FILTER

    select * from (原本的SQL语句) as aaa where (原本的FILETER)
      

  5.   

    路过,也有一样的问题,但要是 (原本的SQL语句) 是个存储过程呢? 
    select * from (原本的SQL语句) as aaa where (原本的FILETER) 好像执行不了吧
      

  6.   

    采用Clone。或者如下:
       ADODataSet2.FieldDefs:=ADODataSet1.FieldDefs;
       ADODataSet2.CreateDataSet;
       ADODataSet2.Open;
       ADODataSet2.AppendRecord();
      

  7.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
      i: integer;
    begin
      ADODataSet1.FieldDefs.Add('F1', ftInteger);
      ADODataSet1.CreateDataSet;
      ADODataSet1.Open;
      for i := 0 to 10000 do
        ADODataSet1.AppendRecord([i]);
      ADODataSet1.Filter := 'F1>5000';
      ADODataSet1.Filtered := true;
      ADODataSet1.SaveToFile('c:\1.dat',pfADTG);  ADODataSet2.LoadFromFile('c:\1.dat');end;
      

  8.   

    看看源代码, filter的设置是怎么搞的,不就明白了吗