• ベストアンサー

access table 上書きしてデータ追VBA

access365 名簿accdbにおいて テーブル1に ID 名前 住所 郵便番号 という項目があり IDは重複不可 数値 テーブル2に ID 名前 住所 郵便番号 という項目があり IDは重複不可 数値 と ふたつのテーブルがあるとき 追加クエリーで テーブル1に テーブル2のデータを追加するときは 同一のIDでは 上書きができません テーブル2のIDが テーブル1にまだ存在しないIDの数値であれば 追加クエリーにより データの追加ができますが 例えばIDが3の人物がいて そのテーブル1の住所が東京で これが新しいデータの格納されているテーブル2では ID3の住所が千葉となったときに これを追加クエリーでIDを3として上書きはできない構造のようです 更新クエリー というのも調べてみましたが ある一定の規則でたとえば物品の値段が100円増しのような 一定の更新条件がある場合であれば更新クエリーが使えますが 上の例のようにテーブル2においてテーブル1にもすでに名前の登録のあるIDのひとの 数人が住所がテーブル2において 新しいものとして変更されていて それをテーブル1に一括で住所の変更のできるVBA 御教示いただけますか (上記の場合ですと住所の変更と郵便番号の変換が同時に当然起きえます) また 同時に テーブル1にはIDの登録もまだない新規IDのひとも テーブル2に存在するとします 要は テーブル2には テーブル1にすでにID人物登録のあるひとと 新規IDのひとが混在している条件で、作りたいと思います すみませんが、おちから頂けると助かります 宜しくお願い致します office365 win10

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

> 更新クエリー > というのも調べてみましたが > ある一定の規則でたとえば物品の値段が100円増しのような > 一定の更新条件がある場合であれば更新クエリーが使えますが 多分説明がテーブル1だけで更新する方法を見たのだと思いますが、別のテーブルのデータを基に更新する方法もありますので更新クエリでできます。 テーブル1にテーブル2のデータを追加更新します。 添付画像のような更新クエリを作成して実行してください。 SQLビューにして下をコピペしてデザイン表示にしたら添付画像のようになります。 UPDATE テーブル1 RIGHT JOIN テーブル2 ON [テーブル1].ID = [テーブル2].ID SET [テーブル1].ID = [テーブル2]![ID], [テーブル1].名前 = [テーブル2]![名前], [テーブル1].住所 = [テーブル2]![住所], [テーブル1].郵便番号 = [テーブル2]![郵便番号]; 作ったクエリをVBAで実行する方法(クエリ名は「クエリ1」の場合です) Sub Test() DoCmd.SetWarnings False DoCmd.OpenQuery "クエリ1" DoCmd.SetWarnings True End Sub もしくはクエリを作成せずにSQL文をVBAで実行する方法 (無の状態からはSQL文を作れないと思いますので、クエリを作ってSQL文を取り出すことになりこちらの方が手間がかかると思います) Sub Test2() Dim StrSQL As String StrSQL = "UPDATE テーブル1 RIGHT JOIN テーブル2 ON [テーブル1].ID = [テーブル2].ID SET " & _ "[テーブル1].ID = [テーブル2]![ID], " & _ "[テーブル1].名前 = [テーブル2]![名前], " & _ "[テーブル1].住所 = [テーブル2]![住所], " & _ "[テーブル1].郵便番号 = [テーブル2]![郵便番号];" DoCmd.SetWarnings False DoCmd.RunSQL StrSQL DoCmd.SetWarnings True End Sub

sushidokei
質問者

お礼

詳細なご解説、毎度ながら有り難うございました。

Powered by GRATICA

その他の回答 (1)

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.2

◎IDデザインビューまたはくえりーデザインビューで開くと  IDの項目名の頭に🔑マークが付いていますね  これは主キーと呼びまして、システムで採番が行われ変更または更新は許されません  因みにテーブル1のIDを除去して。追加クエリーを開いてください  テーブル2にはクエリーを開く都度テーブル1のレコードは増えます ◎テーブルには他にも日付、物品名、数量、単価等が含んでいますね、  また物品のテーブル、取引先のテーブルもありそうですね  これらを差障りの無い範囲で補足願います

関連するQ&A