• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:本テーブルに変更内容を反映する方法)

本テーブルに変更内容を反映する方法【Access 2013 VBA】

このQ&Aのポイント
  • Access 2013 VBAを使用して、本テーブルに変更内容を反映する方法について説明します。
  • 現在、メインフォームとサブフォームがあるAccessデータベースで、サブテーブルのレコードを編集して本テーブルに更新する処理を作成しています。
  • Rec.AddNewメソッドを使用してSubTableに新しいレコードを追加する場合、MainTableにも新しいレコードが作成される可能性があります。

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

  • ベストアンサー
回答No.2

> その場合には、更新されたかどうかを何らかの方法でフォームに持たせることは可能でしょうか? 本テーブルと比較するか、ワークテーブルに更新チェック用のフィールドを持たせるかですね。 ただ、面倒だし、それほどパフォーマンスには影響しないと思いますので(逆に遅くなる可能性もあり)、上書きでいいとおもいます。

superwonderful
質問者

お礼

hatenaさん、いつもありがとうございます。 今、この質問と関連して、サブフォームでレコードを削除した場合について、別に質問をあげています。もし、可能でしたらアトバイスの方よろしくおねがいします。

その他の回答 (1)

回答No.1

メインテーブルとサブテーブルを連結したものを更新するのではなく、それぞれ処理を分けましょう。 その方がシンプルになると思います。 まず、Workテーブルメインに更新があったら、MainTableを更新クエリかレコードセットを利用して更新します。 次に、WorkテーブルサブとSubTableを結合した更新クエリで、Workテーブルサブの更新をSubTableに反映させます。 さらに、WorkテーブルサブとSubTableの不一致クエリでWorkテーブルサブのみに存在するレコードを抽出して追加クエリにして、SubTableに追加します。 もし、Workテーブルサブで削除したレコードがあるなら、上記と逆の不一致クエリでSubTableのみに存在するレコードを抽出して、削除クエリにして削除します。 更新クエリ、追加クエリ、削除クエリではなく、レコードセットを利用して同様の処理をすることも可能です。 自分が得意の方で処理を作成すればいいでしょう。

superwonderful
質問者

補足

ご回答ありがとうございます。 レコード数がそれほど多くないので、サブフォームの全レコードを本テーブルに上書きしてもいいのですが、念のため、変更されたフィールドだけを更新するという処理も考えています。その場合には、更新されたかどうかを何らかの方法でフォームに持たせることは可能でしょうか? よろしくお願いします。

関連するQ&A