- ベストアンサー
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はどうやったらよいでしょう・・。 漠然としていて申し訳ないのですが、よいサンプル等がみつからず困ってしまいました。。何かよいアドバイス、もしくは、よいサンプルのおいてある場所等をご存知の方がいたら教えていただけると助かります。 どうぞよろしくお願いします。
- みんなの回答 (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; 名前で同姓同名があり得るならコード化する必要がありますが。
その他の回答 (1)
- 6657
- ベストアンサー率63% (7/11)
chelnyさんバージョンは何ですか? 私は2003までしか使用したことがありませんが、2007ではMySQLが使用できるということですか。 VBAではなく追加クエリー、更新クエリーとマクロを使用したやり方なら教えられますがどうしますか。
お礼
ありがとうございました。