• 締切
  • 困ってます

レコードセットの値を一気にDBに

  • 質問No.8438768
  • 閲覧数1260
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 50% (2/4)

access2007で開発しています。
レコードセットのデータをDBのテーブルに一気にいれる方法はないのでしょうか?
調べたところレコードセットをMOVENEXTで一件ずつ読込み、インサート文をなげている例はあったのですが、一気にいれる方法は見当たりませんでした。
さらにいうと元々はSQLで
insert into テーブル1(・・・)
select ・・・from テーブル2
としたかったのですが、executeすると´3065´選択クエリを実行できません´のエラーとなってしまいました。
すいませんが、ご教唆ねがいます。

回答 (全2件)

  • 回答No.2

ベストアンサー率 70% (288/408)

残念ながらパススルークエリを投げたことはありません。
別途質問を立ち上げてみてください。
(カテゴリは、その他データベース辺りが適当かと思います)
少しGoogleってみて、
パススルークエリができているとしてクエリ名が、『PQ』だったとしたら
sSql="INSERT INTO テーブル1 ( フィールド1, フィールド2 )" _
& " SELECT フィールド1, フィールド2" _
& " FROM テーブル;"

sSql="INSERT INTO テーブル1 ( フィールド1, フィールド2 )" _
& " SELECT * FROM PQ;"
で出来そうな気がしますが果たして?

レコードセットは DAOだと↓で取得できる模様
http://ubuntuexpert.blogspot.jp/2011/10/access.html
お礼コメント
sho-birdie18

お礼率 50% (2/4)

お礼がおそくなり、申し訳ありません。ご回答頂きありがとうございました。

一応、現在の結果をお伝えすると、
いろいろ試しましたがパススルーでサーバーから取得した値をローカルテーブルに一回のSQLで入れることはできませんでした。
一度レコードセットに入れてからローカルテーブルに入れますが、それもいっきにする方法はなく、一行ずつINSERTをなげる方法で解決しました。
投稿日時:2014/01/24 11:07
  • 回答No.1

ベストアンサー率 70% (288/408)

追加クエリで行うには考慮すべき点が幾つか。
テーブル1と2は同じデザインか
・フィールドの並び順
・データ型
オートナンバー型のフィールドがあるか
インデックスに、はい(重複なし)のフィールドがあるか
(テーブル1と2で重複しないのなら考慮の必要はありません)
2→1に追加するフィールドは全てなの。
それから…教唆は悪事をそそのかす意味ですので教示が適切かと。

追加クエリのSQL文の基本形は
INSERT INTO テーブル1 ( フィールド1, フィールド2 )
SELECT フィールド1, フィールド2
FROM テーブル;
のような感じになるので
dim sSql as string
sSql="INSERT INTO テーブル1 ( フィールド1, フィールド2 )" _
& " SELECT フィールド1, フィールド2" _
& " FROM テーブル;"
debug.print sSql
currentdb.execute sSql,dbfailOnerror
のようにしてみると?
補足コメント
sho-birdie18

お礼率 50% (2/4)

ご回答頂きありがとうございます。
ご回答頂いた内容でできました。
できたのですが、
その後新たな要求で、パススルークエリでデータを取得して仮のテーブルにデータを入れる必要が出てきました。
取得とINSERTを分けなければ行けないと思うのですが、一つ目の質問に戻って、レコードセットの値をテーブルに登録するには一行ずつINRERT文を投げなければダメなのでしょうか?
再びすいません。ご教示ねがいます。
投稿日時:2014/01/21 13:18
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ