我有没有办法程序控制把sqlserver的数据库转成access数据库,要求access数据库是自己生成的,随便存放哪个位置。我想到用dts,可是还有许多技术问题,比如说dts的参数,另外昨天设好的dts今天失效了,大家有没有别的方法告知在下?转换对字段要求不高,基本上就是原样转一下就行

解决方案 »

  1.   

    面对这么多人的up,我感激涕零。
    我把我的做法公布如下:我先新建一个access数据库,然后用命令启动sqlserver的dts导入导出数据向导,然后就撒手不管了,...
    有没有好办法呢?呢?呢?呢?呢?呢?呢?呢?呢?呢?呢?呢?呢?呢?呢?呢?呢?呢?呢?
      

  2.   

    1.从access把数据导到sql里
    方法一:
    SELECT * 
    FROM 
    OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
     'Data Source="c:\TEMP\ICCARD.mdb";User ID=Admin; Jet OLEDB:Database Password =ICCARD')...PRICES方法二:
    SELECT a.*
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
       'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders) 
       AS a
    GOUse 你的库
    SELECT * Into SQL中对应表名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="D:\NNHT\MrMfDBA.mdb";Jet OLEDB:Database Password=PassWord;Persist Security Info=False')...Access表名SP_Help SQL中对应表名  --得到表字段属性.Select * from SQL中对应表名
    SQL --->AccessADOConnection 指向Access
    SELECT * into table  FROM Tab1 IN [ODBC]
    [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]
    在SQL SERVER 里运行:insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',  'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名 (列名1,列名2)select 列名1,列名2  from  sql表
    INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)SELECT *FROM sqltablename
      

  3.   

    无语..大家看看我的源码吧
    第一步:
    procedure TForm3.Button1Click(Sender: TObject);
    var A:OleVariant;Access_In:string;
    begin
      SelectDirectory('请选择存放ACCESS文件的目录','',Access_In);
      if Access_In='' then Exit;
      Wait(Sender,1);
      try 
      A:=CreateOleObject('Access.Application');
      A.NewCurrentDatabase(Access_In+'\BPVIIWEB');
      except
        raise Exception.Create('Access执行出错,请确认'+#13#10+'Access已经安装'+#13#10+'所选目录下没有同名文件');
      end;
      Report(StatusBar1,'新建Access文件成功');
      my_msg(m_success,'文件成功创建在:'+Access_In+'\BPVIIWEB.MDB');
      A:=Unassigned;
      Wait(Sender,2);
    end;第二步
      Wait(Sender,1);
      Report(StatusBar1,'启动导入导出数据向导');
      WinExec('dtswiz',SW_SHOWNORMAL);
      Wait(Sender,2);谁还有好办法
      

  4.   

    这个我做过,决对OK,在d6中通过,http://www.delphibbs.com/keylife/iblog_show.asp?xid=8024
      

  5.   

    差不多,程序控制也只有同时连两个数据链接然后导数据进去了
    问题是我access里怎么建表,估计是用连接传sql去
    我在看dtswiz能否独立运行,如果不能的话,就得用上述方法了
      

  6.   

    /*************导出到Access********************/
    insert into openrowset('Microsoft.Jet.OLEDB.4.0', 
       'x:\A.mdb';'admin';'',A表) select * from 数据库名..B表
      

  7.   

    我现在dts已经分离得就差最后一步了,谁有分离的经验,来瞧瞧
      

  8.   

    to :  hongama(delphi级民工) 
    你太伟大啦,我爱你,UP,谢谢