- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:本テーブルに変更内容を反映する方法)
本テーブルに変更内容を反映する方法【Access 2013 VBA】
このQ&Aのポイント
- Access 2013 VBAを使用して、本テーブルに変更内容を反映する方法について説明します。
- 現在、メインフォームとサブフォームがあるAccessデータベースで、サブテーブルのレコードを編集して本テーブルに更新する処理を作成しています。
- Rec.AddNewメソッドを使用してSubTableに新しいレコードを追加する場合、MainTableにも新しいレコードが作成される可能性があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> その場合には、更新されたかどうかを何らかの方法でフォームに持たせることは可能でしょうか? 本テーブルと比較するか、ワークテーブルに更新チェック用のフィールドを持たせるかですね。 ただ、面倒だし、それほどパフォーマンスには影響しないと思いますので(逆に遅くなる可能性もあり)、上書きでいいとおもいます。
その他の回答 (1)
- hatena1989
- ベストアンサー率87% (378/433)
回答No.1
メインテーブルとサブテーブルを連結したものを更新するのではなく、それぞれ処理を分けましょう。 その方がシンプルになると思います。 まず、Workテーブルメインに更新があったら、MainTableを更新クエリかレコードセットを利用して更新します。 次に、WorkテーブルサブとSubTableを結合した更新クエリで、Workテーブルサブの更新をSubTableに反映させます。 さらに、WorkテーブルサブとSubTableの不一致クエリでWorkテーブルサブのみに存在するレコードを抽出して追加クエリにして、SubTableに追加します。 もし、Workテーブルサブで削除したレコードがあるなら、上記と逆の不一致クエリでSubTableのみに存在するレコードを抽出して、削除クエリにして削除します。 更新クエリ、追加クエリ、削除クエリではなく、レコードセットを利用して同様の処理をすることも可能です。 自分が得意の方で処理を作成すればいいでしょう。
質問者
補足
ご回答ありがとうございます。 レコード数がそれほど多くないので、サブフォームの全レコードを本テーブルに上書きしてもいいのですが、念のため、変更されたフィールドだけを更新するという処理も考えています。その場合には、更新されたかどうかを何らかの方法でフォームに持たせることは可能でしょうか? よろしくお願いします。
お礼
hatenaさん、いつもありがとうございます。 今、この質問と関連して、サブフォームでレコードを削除した場合について、別に質問をあげています。もし、可能でしたらアトバイスの方よろしくおねがいします。