可能是两个表的字段顺序没有对应起来。建议改为:
for I :=0 to Table1.FieldCount-1 do
  Table1.Fields.Fields[I].AsVariant:=Table2.Filedbyname  (Table1.Fields.Fields[I].FieldName).AsVariant;
结果如何?