环境:DELPHI+access97,最好能使用ADO连接
FAQ中的回答没什么用,光一个什么SQL语句没有效果,因为我不知道该在哪里写入,谁能告诉我?
现在面临的问题是(至少我觉得是个问题),ADOConnection(connectionstring是我自定义的),只能同时和一个数据库连接,那怎么可能同时操作两个数据库呢?我觉得关键是怎么同时连接操作两个数据库。
求高人帮我,把一个ACCESS数据库中的表或者视图弄到另一个access数据库这个过程怎么操作?越详细越好。

解决方案 »

  1.   

    首先,你最好使用两个AdoConnection. 分别连到两个access中. 然后在目标库中创建视图或表, 再源access库中的数据用insert into 语句插入到目标access库中创建好的视图或表中
      

  2.   

    一句SQL也习行
    ADOQUERY
    要连接目标库
    SQL里面写源库的绝对路经
      

  3.   

    select * into [;database=C:\db1.mdb].mytable from mytable
      

  4.   

    老大们,看我上网记录就知道我上网少,革命老区上网不容易啊!~~  :(我用的是两个AdoConnection,一个提取源数据,一个更新目标数据,但是在实际操作中就不知道了,虽然两个AdoConnection是在同一个应用程序中,但是怎么处理查询到的表和视图中的数据?我甚至试过用文本文件倒出倒入。结果当然是不成功拉。
      

  5.   

    在oracle中:
    在数据库中建立连接.在form中使用即可. CREATE  DATABASE LINK "lk_test2"  CONNECT TO "test2"  
        IDENTIFIED BY "test2_passwd"   
        USING 'test2'; insert into test2_table@lk_test2 values..... 为了使用方便可以将:test2_table@lk_test2再建一个同义词;
      

  6.   

    在sqlserver中:
    如果你是在一个局域网内,在SQL服务器中建立link server 指向另一台服务器,在Delphi做一个数据连接连到其中一台服务器,访问另一台服务器中的数据库,只需在SQL 语句中加入link server中连接名称既可
      

  7.   

    不迟啊 老大 因为我还是不明白
    我还是不会把一个ACCESS数据库中的表或者视图弄到另一个access数据库里去?SQL语句我到是会写了,但是不知道写在哪.
    我曾今把源数据保存为文件,但是在到入另一个ACCESS的时候报错了
      

  8.   

    insert into  表1.table from d:\库1.table2
      

  9.   

    假如当前数据库连接到表2所在的数据库。insert into 表2(字段1,字段2,字段3,...,字段n)
    select 字段1,字段2,字段3,...,字段n 
    from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="D:\Data1.mdb";User ID=YourUserID1;Password=YourPassword1')...表1前提是表1和表2的结构相同!!
    如果表2事先不存在,可有SQL语句创建!!
      

  10.   

    不够啊,老大们难道你们一定要我哭出来?
    写在哪?写在ADOCnection.ConnectionString()里,还是ADOCnection.Excute()里?还是ADOQuery.ConnectionString()里?
      

  11.   

    因为我以前是写在ADOQuery.SQL里的
      

  12.   

    用batchmove控件,设置几个属性很实现了。
      

  13.   

    SELECT * into T_KEYOBJECT
      FROM OpenDataSource( 'MSDAORA.1',
          'Password=;User ID=;Data Source=DEVPMIS;Persist Security Info=True')..PMIS.T_KEYOBJECT这是我用来从oracle->sql2000的,ACCESS也一样的不过建议不要用batchhmove
      

  14.   

    //数据导出,根据'保存对话框'返回的路径创建一个空的Access库,然后创建一个空的数据表,
    //且表名也固化为taHistoryData,然后将要导出的数据导入其中
    procedure TForm_main.export_BitBtnClick(Sender: TObject);
    var
      CreateAccess:OleVariant;
      str:string;
      path:string;
    begin
      try
        adoquery1.ExecSQL;
      except
      on E:EOleException do
        if application.Messagebox('请您先打开要处理的数据文件!','提示',mb_Ok+mb_defbutton1+mb_iconquestion+mb_systemmodal)= idOk then
          exit;
      end;  if adoquery1.RecordCount=0 then
                begin
                  if application.Messagebox('没有相应的数据,无需导出!','提示',mb_Ok+mb_defbutton1+mb_iconquestion+mb_systemmodal)= idOk then
                    exit;
                end;  savedialog1.FileName:=file_name_default;
      savedialog1.InitialDir:=s_ini;
      
      if savedialog1.Execute then
      begin
        path:=savedialog1.FileName;
        //创建一个空的Access数据库
        try
          CreateAccess:=CreateOleObject('ADOX.Catalog');
          CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path);
        except
          on Err:EoleException do
          begin
            if Pos('数据库已经存在',Err.Message) > 0 then
              if application.Messagebox('同名文件已经存在,导出失败!','提示',mb_Ok+mb_defbutton1+mb_iconquestion+mb_systemmodal)= idOk then
                exit
            else
              if application.Messagebox('文件创建失败!','提示',mb_Ok+mb_defbutton1+mb_iconquestion+mb_systemmodal)= idOk then
                exit;
          end;
        end;    with datamodule2 do
        begin
          adoconnection1.Close;
          adoconnection1.LoginPrompt:=false;
          adoconnection1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+path;
          adoconnection1.Open;
        end;    //拷贝数据
        try
          with adoquery2 do
            begin
            Connection:=DataModule2.ADOConnection1;
            //拷贝taAddresses表
            sql.Clear;
            str:='select * into '+ExtractFileName(savedialog1.FileName)+'.taAddresses from '+ExtractFileName(s_ini)+'.taAddresses';
            SQL.Add(str);
            ExecSQL; 
            //拷贝taCustomers表
            sql.Clear;
            str:='select * into '+ExtractFileName(savedialog1.FileName)+'.taCustomers from '+ExtractFileName(s_ini)+'.taCustomers';
            SQL.Add(str);
            ExecSQL;        //拷贝taHistoryData表
            sql.Clear;
            str:='select * into '+ExtractFileName(savedialog1.FileName)+'.taHistoryData from '+ExtractFileName(s_ini)+'.taHistoryData '+sql_str;
            SQL.Add(str);
            ExecSQL;        //拷贝taJob表
            sql.Clear;
            str:='select * into '+ExtractFileName(savedialog1.FileName)+'.taJob from '+ExtractFileName(s_ini)+'.taJob';
            SQL.Add(str);
            ExecSQL;        
            //拷贝taProjects表
            sql.Clear;
            str:='select * into '+ExtractFileName(savedialog1.FileName)+'.taProjects from '+ExtractFileName(s_ini)+'.taProjects';
            SQL.Add(str);
            ExecSQL;    except
        on e:EOleException do
          if application.Messagebox('导出失败!原数据库内有数据表丢失,请先核对!','提示',mb_Ok+mb_defbutton1+mb_iconquestion+mb_systemmodal)= idOk then
            exit;
        end;
        adoquery1.first;
        if application.Messagebox('数据导出完毕!','提示',mb_Ok+mb_defbutton1+mb_iconquestion+mb_systemmodal)= idOk then
          exit;
      end
      else
        exit;end;