• 締切済み

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

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

みんなの回答

回答No.2

残念ながらパススルークエリを投げたことはありません。 別途質問を立ち上げてみてください。 (カテゴリは、その他データベース辺りが適当かと思います) 少し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
質問者

お礼

お礼がおそくなり、申し訳ありません。ご回答頂きありがとうございました。 一応、現在の結果をお伝えすると、 いろいろ試しましたがパススルーでサーバーから取得した値をローカルテーブルに一回のSQLで入れることはできませんでした。 一度レコードセットに入れてからローカルテーブルに入れますが、それもいっきにする方法はなく、一行ずつINSERTをなげる方法で解決しました。

回答No.1

追加クエリで行うには考慮すべき点が幾つか。 テーブル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
質問者

補足

ご回答頂きありがとうございます。 ご回答頂いた内容でできました。 できたのですが、 その後新たな要求で、パススルークエリでデータを取得して仮のテーブルにデータを入れる必要が出てきました。 取得とINSERTを分けなければ行けないと思うのですが、一つ目の質問に戻って、レコードセットの値をテーブルに登録するには一行ずつINRERT文を投げなければダメなのでしょうか? 再びすいません。ご教示ねがいます。

関連するQ&A