• ベストアンサー

accessで選択クエリで得た全レコードをテーブルに取り込む方法

選択クエリを実行して得たレコードを全てテーブルに移したいのですが、簡単な方法を教えて下さい。最初からクエリをテーブル作成クエリにする方法以外にありますか?出来ればテーブル(フィールドはもちろんクエリで得たレコードと同じ)はすでに作成済みでそのテーブルに上書きしたいのですが・・・ よろしくお願いいたします!

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

横レス失礼します。 > フォームを使ってパラメータをわたし、クエリを実行 フォーム上のテキストボックスなどに絞り込み条件を入力し、そこで一旦データを確認した上で テーブルに追加したい、ということでよろしいでしょうか。 そうであれば、フォームのレコードソース用のクエリ(→選択クエリ)と、テーブル更新用のクエリ (→削除クエリ+追加クエリ)とをそれぞれ作ってしまう、という手もあると思います。 例えば、  ・コピー元となるテーブルをテーブル1(フィールド=ID、名前)  ・コピー先となるテーブルをテーブル2(フィールド=名前)  ・絞り込み条件と結果を表示するフォーム=フォーム1  ・絞り込み条件を入力するテキストボックス=テキスト1  ・フォーム1のレコードソースとなるクエリ=クエリ1  ・テーブル2の全レコードを削除するクエリ=クエリ2  ・フォームで絞り込んだレコードをテーブル2に追加するクエリ=クエリ3 とすると、それぞれのクエリは、以下の通りになります: クエリ1(重複データをそのまま表示): Select テーブル1.ID,テーブル1.名前 From テーブル1 Where テーブル1.名前 Like "*" & Forms!フォーム1!テキスト1 & "*" クエリ2: Delete テーブル2.* From テーブル2; クエリ3(名前のみを追加、重複する名前は1つにまとめる): Insert Into テーブル2 ( 名前 ) Select Distinct クエリ1.名前 From クエリ1; 以上です。 (新規クエリをデザインビューで開いたら、テーブルは何も追加せず、メニューで「表示(V)→  SQLビュー(Q)」を選択して、上記SQL文を貼り付け、保存してください) なお、テキスト1を編集したら、必ずフォーム1のレコードの表示を更新する形にしておかないと、 フォームの表示とクエリ3で実際にテーブル2に追加されるデータとが合わなくなったりする ことも考えられますので、注意してください。 (テキスト1の更新後イベントでフォームの表示を更新しているなら、問題ありません)

viva123
質問者

お礼

御礼がとっても遅くなってしまいました…ありがとうございました! ご丁寧な回答していただき参考になりました。SQLも勉強しないとと思っているのですが…ハドルが高い気がして前に進めません…本当にありがとうございました!

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#140971
noname#140971
回答No.2

Tab1: ID__fld_1 1___A 2___A 3___A Tab2: ID__fld_1 1___A 2___B 3___C UPDATE tab1 SET fld_1 = DBLookup('fld_1','tab2','ID=' & [ID]) WHERE fld_1<>DBLookup('fld_1','tab2','ID=' & [ID]); 主キーの存在が大前提ですが・・・。 「fld_1が違ったらfld_1を更新せよ!」という SQL文を書けば・・・。 ただし、この方式だと、フィールドの数だけ。 まあ、現実的じゃないです。 [イミディエイト] ? XXXXXX("DELETE * FROM Tab1;") True ? XXXXXX("INSERT INTO Tab1 SELECT * FROM Tab2") True と、たかだか2回SQL文を実行すれば済む話です。 これで事足りると思いますが・・・。 ところで、クエリ自体をVBAで編集することが出来れば、より簡単に実現できるかと思います。 もしかしたら、この辺りが課題なのかも・・・。

viva123
質問者

お礼

お礼がとっても遅くなってしまいましたが、どうもありがとうございました! >クエリ自体をVBAで編集することが出来れば、より簡単に実現でき >るかと思います。もしかしたら、この辺りが課題なのかも・・・。 おっしゃる通りなのです。VBAで編集できたらと思うのですが、マニュアルを買って奮闘中ですが、なかなか思うように…周りに頼る人もいず、一人で四苦八苦です…回答していただいた内容が理解できるようになりたいと思います!

すると、全ての回答が全文表示されます。
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

(既存テーブルのデータの)削除クエリ + 追加クエリ という組み合わせ。

viva123
質問者

補足

すみません、もう少し説明をお願いしたいのですが・・・実はフォームを使ってパラメータをわたし、クエリを実行するために選択クエリしか指定が出来ません。さらに重複したデータを削除したいのでテーブルにレコードを落とし、そのテーブルに対してまたクエリをかけています。そのため最初のクエリはどうしても選択クエリである必要があるのですが・・・追加クエリ・削除クエリの組み合わせをどのように使えばよいのでしょうか?すみません知識不足で・・・再度よろしくお願いいたします。

すると、全ての回答が全文表示されます。

関連するQ&A