用TBatchMove。如果不能使,那就编程序:procedure CopyDataSet( Source, Dest: TDataSet );
var
  i: Integer;
  AField: TField;
begin
  Source.First;
  while not Source.EOF do
  begin
    Dest.Edit;
    for i:=0 to Source.FieldCount-1 do
    begin
      AField := Source.Fields[i];
      Dest.FieldByName(AField.FieldName).Assign(AField);
    end;
    Dest.Post;
  
    Source.Next;
  end;
end;声明:此程序只是表明意思,未实践过。不保证能通过编译也不保证运行不错,因为运行的环境有可能不符合,如Dest是只读的或Source与Dest根本就不同构。如有问题,请电 [email protected]

解决方案 »

  1.   

    三个办法:
    1.直接用SQL语句,从一个已有数据表向另一个数据表复制数据,只需要有一个语句就够了,不过要求两个数据表的字段和类型要一致;效率很高;
    2.用BatchMove,效率也很高;
    3.先把源表的数据读出来,循环写入另一个数据表,效率不高,代码冗长,是个不太动脑筋的办法
      

  2.   

    把dataset作参数用按值传递的办法传到你的函数中又或者
     Move(dataset1,dataset2,sizeof(dataset1)) ?
      

  3.   

    谢谢大家捧场!
    不过刺月  的理解可能有一点问题!
    我的意思不是数据库的数据操作,而是在前台的两个组件如何复制数据.
    对了,还有一个问题我忘记说了:目标dataset的字段和数据都只是源dataset的子集!大家多多捧场哦
    嫌分不够的说!分,我有的是!!!!!!!!!!!!