• ベストアンサー

access フォームを使ったコーディングについて

AccessVBA超初心者のため、内容に不備があるかも知れませんが、、教えてください。 やりたいこと:フォームボタンを利用して、 Aテーブル(マスター)に対して、Bテーブルの内容を isnert、もしくはupdateしたい。その際、Aテーブルに既にあるものは、update。Aテーブルにないものはinsertとする。 例: Aテーブル    Bテーブル     joe 20歳     joe 21歳     james 30歳    janet 19歳        ↓    joe 21歳    james 30歳    janet19歳 としたい。というような内容です。 そこで、まず、 'MySQL = "SELECT * FROM A INNER JOIN B ON (A.名前=B.名前) " Set rst = db.OpenRecordset(MySQL, dbOpenSnapshot) ' --- B をやって、ここで該当したものはupdateをかけようと思ったのですが、さっそくつまずき、このクエリ自体が実行エラーになってしまいました。 また、この後の問題なのですが、updateはこれで該当したものをすればよいと思うのですが、新規のinsertはどうやったらよいでしょう・・。 漠然としていて申し訳ないのですが、よいサンプル等がみつからず困ってしまいました。。何かよいアドバイス、もしくは、よいサンプルのおいてある場所等をご存知の方がいたら教えていただけると助かります。 どうぞよろしくお願いします。

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

  • ベストアンサー
  • psgrade
  • ベストアンサー率86% (19/22)
回答No.2

フォームにコマンドボタンを作成し、下記のようにプログラムすれば良いと思います。 DoCmd.SetWarnings False '確認メッセージをoffする。 DoCmd.OpenQuery "insert" DoCmd.OpenQuery "update" DoCmd.SetWarnings True '確認メッセージをonに戻す。 クエリーは、例えば下記のSQLのように予め作成して置きます。 insert: INSERT INTO A ( name, age ) SELECT B.name, B.age FROM A RIGHT JOIN B ON A.name = B.name WHERE (((A.name) Is Null)); update: UPDATE A INNER JOIN B ON A.name = B.name SET A.age = B!age; 名前で同姓同名があり得るならコード化する必要がありますが。

chelny
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • 6657
  • ベストアンサー率63% (7/11)
回答No.1

chelnyさんバージョンは何ですか? 私は2003までしか使用したことがありませんが、2007ではMySQLが使用できるということですか。 VBAではなく追加クエリー、更新クエリーとマクロを使用したやり方なら教えられますがどうしますか。

関連するQ&A