我已经通过connection建立了两个数据库的连接,怎么从源库表中取得数据集插入到目的库数据表中,表的结构不一样!

解决方案 »

  1.   

    从一个表中查询插入另一个表中:
    insert into tmp_tal select * from table;
      

  2.   

    这两个表不在一个库中能够执行吗?我用use 库后还是不可以!
      

  3.   

    那你可以这样,用ClientDataSet创建一个内存表,从一个库中查询后存入此内存表,然后在插入到另外一个表,创建内存表的代码如下:
    function TfrmMain.CreateTableInMemory(const AFieldDefs: TFieldDefs): TDataSet;
    var tmpTable: TClientDataSet;
    begin
      tmpTable := nil;
      Result := nil;
      if AFieldDefs <> nil then
      begin
        try
          tmpTable := TClientDataSet.Create(nil);
          tmpTable.FieldDefs.Assign(AFieldDefs);
          tmpTable.CreateDataSet;
          Result := (tmpTable as TDataSet);
        except
          if tmpTable <> nil then FreeAndNil(tmpTable);
          Result := nil;
          Raise;
        end;
      end;
    end;
      

  4.   

    使用时:
    ADataSet := TDataSet.Create(nil);
      with ADataSet.FieldDefs do
      begin
        Add('Field1', ftString, 30);
        Add('Field2', ftString, 100);
        Add('Field3', ftString, 20);
        Add('Field4', ftString, 100);
        Add('Field5', ftString, 100);
        Add('Field6', ftString, 100);
        Add('Field7', ftString, 100);
      end;
      DataSource1.DataSet := CreateTableInMemory(ADataSet.FieldDefs);