如题,谢谢!

解决方案 »

  1.   

    用两个数据集,用batchmove 一下子就过去了。
      

  2.   

    用Sql Server本身的数据导入导出功能。
      

  3.   

    (用Sql Server本身的数据导入导出功能)
    就这样可以!
      

  4.   

    给你个地址,给点分。
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966
      

  5.   

    我现在出正在做类似的东西,我的实现方法是:
    前提准备工作:
    分别在SQL Server和Access创建两个数据表和字段完全一样得数据库程序设计:
    添加两个ADOConnection和ADODataSet,一组连接本地access数据库,一组连接SQL Server,然后将Access数据表的数据复制到SQL Server上代码:
    //复制一个数据表过程
    Procedure AppendCurrent(Dataset1:TADOTable; Dataset2:TADOTable);
    Var
      aField : Variant ;
      i      : Integer ;
      strFieldName: string;
    Begin
      DataSet1.First;
      while not DataSet1.Eof do    //DataSet1是源  DataSet2是目标
      begin
          DataSet2.Append;
          For i := 1 to (DataSet1.Fieldcount-1) Do   {我的第0个字段是自动编号的主键,不用复制}
          Begin
              strFieldName := DataSet1.Recordset.Fields[i].Name;
              DataSet2.FieldByName(strFieldName).Value := DataSet1.FieldByName(strFieldName).Value;
          End;
          DataSet2.Post;
          DataSet1.Next;
      end;
    end;
    //上传过程
    Procedure Update();
    var
      i,j: integer;
      TableName: string;
    Begin
    //连接数据库
        frmUpdate.ADOConnection1.Open;
        frmUpdate.ADOConnection2.Open;    frmUpdate.ADOTable1.Close;
        frmUpdate.ADOTable2.Close;    frmUpdate.ADOTable1.Connection := frmUpdate.ADOConnection1;
        frmUpdate.ADOTable2.Connection := frmUpdate.ADOConnection2;    frmUpdate.ListBox1.Clear;
        frmUpdate.ADOConnection1.GetTableNames( frmUpdate.ListBox1.Items );    //将所有要上传的数据表列队到一个ListBox中
        for i:=0 to frmUpdate.ListBox1.Count-1 do
        begin
          TableName := frmUpdate.ListBox1.Items[i]; //打开Access数据表
          frmUpdate.ADOTable1.Close;
          frmUpdate.ADOTable1.TableName := TableName;
          frmUpdate.ADOTable1.Open; //打开SQL Server数据表
          frmUpdate.ADOTable2.Close;
          frmUpdate.ADOTable2.TableName := TableName;
          frmUpdate.ADOTable2.Open;      //如果服务器数据库原来有记录,则先删除掉
          if frmUpdate.ADOTable2.Recordset.RecordCount > 0 then
          for j:=0 to frmUpdate.ADOTable2.RecordCount-1 do
            frmUpdate.ADOTable2.Delete;      //如果客户端数据库有记录,则上传
          if not frmUpdate.ADOTable1.Eof then
              AppendCurrent(frmUpdate.ADOTable1, frmUpdate.ADOTable2);    end;    // for
    End;