こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

他のMDBのテーブルに追加したい

Access2010のADOについてご質問します。

以下のようにして、データを追加しています。


Dim SQL As String

Dim cn As ADODB.Connection
Set cn = CurrentProject.Connection

'
SQL = "INSERT INTO テーブルA ( 勤務時間 ) "
SQL = SQL & "SELECT [テーブルA ].[勤務時間] "
SQL = SQL & "FROM テーブルA ; "
cn.Execute SQL

ご質問したいのは、
当MDB(PC)から社内サーバーにあるMDBのテーブルに追加したいのです。

違うテーブル名でしたら、リンクをすれば済む話とは思いますが
同じテーブル名の「テーブルA」なので
どのようにすればいいのか困っています。

ご指導の程をよろしくお願いします。

投稿日時 - 2014-11-04 14:51:08

QNo.8813580

困ってます

質問者が選んだベストアンサー

以下でどうなりますか

SQL = "INSERT INTO テーブルA( 勤務時間 ) IN '★★' " _
   & "SELECT 勤務時間 FROM テーブルA;"


※ ★★ 部分は相手のフルパスに書き換えます。
相手が E:\Hoge\aaa.accdb なら

SQL = "INSERT INTO テーブルA( 勤務時間 ) IN 'E:\Hoge\aaa.accdb' " _
   & "SELECT 勤務時間 FROM テーブルA;"

もしくは

SQL = "INSERT INTO [;DATABASE=E:\Hoge\aaa.accdb].[テーブルA]( 勤務時間 ) " _
   & "SELECT 勤務時間 FROM テーブルA;"


> 違うテーブル名でしたら、リンクをすれば済む話とは思いますが

リンクする時に名前を変えておけばよいですね
以下は、リンクテーブル「T_Tmp」を作り直す例?になるか?
( ADO ではなく DAO での例ですけど・・・)

Public Sub Samp1()
  Dim db As DAO.Database
  Dim tdf As DAO.TableDef
  Const sFile As String = ";DATABASE=E:\Hoge\aaa.accdb"

  On Error Resume Next
  Set db = CurrentDb
  db.TableDefs.Delete "T_Tmp"
  Set tdf = db.CreateTableDef("T_Tmp")
  With tdf
    .Connect = sFile
    .SourceTableName = "テーブルA"
  End With
  db.TableDefs.Append tdf
  db.TableDefs.Refresh

  Set tdf = Nothing
  Set db = Nothing
  RefreshDatabaseWindow
End Sub


ADO なら、以下が参考になるかも

リンクされたテーブルを作成する
http://msdn.microsoft.com/ja-jp/library/cc376276.aspx

投稿日時 - 2014-11-05 06:24:11

お礼

こんにちはー
とっても詳しいご回答ありがとうございましたッ!
助かりました。


SQL = "INSERT INTO テーブルA( 勤務時間 ) IN 'E:\Hoge\aaa.accdb' " _
   & "SELECT 勤務時間 FROM テーブルA;"

の方法で解決しました。

投稿日時 - 2014-11-07 14:57:21

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問