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;
还有filter以后一个一个拷过去,那样又觉得太慢了……
用sql直接从数据库取,然后只要保持两个数据集同步就可以了,也就是说一个数据集刷新后,另一个也跟着执行刷新
有个小技巧首先把原本的FILTER的拿出来
然后把原本的SQL语句包一层 最后在后面加个WHERE FILTER
如
select * from (原本的SQL语句) as aaa where (原本的FILETER)
select * from (原本的SQL语句) as aaa where (原本的FILETER) 好像执行不了吧
ADODataSet2.FieldDefs:=ADODataSet1.FieldDefs;
ADODataSet2.CreateDataSet;
ADODataSet2.Open;
ADODataSet2.AppendRecord();
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;