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

解決済みの質問

accessとオラクルの連携について

お世話になります。アクセスでテーブルのデータをSQL文で取得し、
そのデータをオラクルのテーブルにinsertしたいと思ってます。
ただ、フィールドの数が40個もあるので
insert into ・・・・Fields(0),Fields(1)・・・・
と記述するのはかなり面倒なので何かいい方法はないでしょうか
よろしくお願いします。
なお、access側とオラクル側のテーブルは同じ型です。

’ローカルテーブルのデータを取得
rec.Open "select * from tesuto", cnn

’取得したデータをinsertする
Do Until rec.EOF
sql= insert into value(Fields(0),Fields(1),・・・
rec1.Open "select * from tesuto1", cnn1
Loop

投稿日時 - 2007-03-06 18:53:38

QNo.2808430

困ってます

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

INSERT 先のテーブルのリンクテーブルを作っておいて、そのテーブルへの追加クエリを作る
というのはどうでしょうか?

投稿日時 - 2007-03-07 01:10:30

お礼

リンクテーブルとは頭が回りませんでした。
ありがとうございました。

投稿日時 - 2007-03-14 09:34:57

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

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

回答(3)

ANo.3

こんな感じでできるのでは?
オラクルの環境が無いので試していませんが...orz
※Insert文のところはたぶん修正が必要です

  Dim connAccess As ADODB.Connection
  Dim rs     As ADODB.Recordset
  Dim fld     As ADODB.Field
  Dim sql     As String
  Dim connOracle As ADODB.Connection
  
  Set connAccess = Application.CurrentProject.Connection
  
  Set connOracle = New ADODB.Connection
  connOracle.Open "DSN=XXXXX; UID=XXXXX; PWD=XXXXX;"
  
  sql = "select * from tesuto"
  Set rs = connAccess.Execute(sql)
  
  Do Until rs.EOF
    
    sql = ""
    For Each fld In rs.Fields
      If Len(sql) > 0 Then sql = sql & ","
      sql = sql & "'" & rs.Fields(fld.Name).Value & "'"
    Next
    sql = "inset into tesuto values (" & sql & ")"
    
    connOracle.Execute sql
    
    rs.MoveNext
  Loop
  
  rs.Close
  connAccess.Close
  connOracle.Close
  
  Set rs = Nothing
  Set connAccess = Nothing
  Set connOracle = Nothing


#1さんが言われるようにオラクルからリンクテーブルを作成し、そのテーブルにInsertするほうが楽です
さらに速いと思われます

投稿日時 - 2007-03-07 10:54:53

お礼

ありがとうございます。
今回はリンクテーブルを作成しました。けど、ローカルのテーブル等
でこの方法はかなり有効ですね。参考にさせて頂きます。ありがとう
ございました

投稿日時 - 2007-03-14 09:32:33

ANo.2

SELECT TESUTO.* INTO TABLENAME FROM TESTO;
で新規テーブルTABLENAMEに全件レコードをコピーします。
オラクルがリンクテーブルでない場合のデータ型がどうなるかは、未確認です。 クエリを作ってみて、SQLビューに変更するとSQL文が見れます。 オラクルのSQLではセミコロンは余分だったかもしれません。

投稿日時 - 2007-03-07 08:16:13

お礼

リンクテーブルが楽みたいですね。ありがとうございます。

投稿日時 - 2007-03-14 09:34:13

あなたにオススメの質問