アプリ版:「スタンプのみでお礼する」機能のリリースについて

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」なので
どのようにすればいいのか困っています。

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

A 回答 (1件)

以下でどうなりますか



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 …
    • good
    • 0
この回答へのお礼

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


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

の方法で解決しました。

お礼日時:2014/11/07 14:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A