おすすめ記事

同じカテゴリー

変更履歴テーブルの作成



追加クエリを使用して、テーブルに変更履歴を残す方法です。
テーブル

[T_売上]テーブルは、下のようになっています。[ID]が主キーとなっています。
デザインビュー

この[T_売上]テーブルをコピーして、[T_売上の履歴]テーブルを作成します。
[ID]の主キーは削除して、重複のレコードが保存できるようにします。
履歴テーブル作成

スポンサーリンク

[F_帳票]フォームの[開く]ボタンをクリックすると[F_単票]フォームが開くように設定しています。
これについては、[帳票フォームから単票フォームを起動するには]を参照してください。

この[F_単票]フォームで[担当者]や[数量][商品]を変更したら、更新日時が自動取得され、そのデータが[T_売上の履歴]に保存されるようにします。
単票フォーム

[更新日時]が自動的に取得されるように[担当者][数量][商品]コントロールの[更新後処理]イベントに以下のように入力します。
VBA

追加クエリを作成します。[T_売上]テーブルを元に下のように設定します。[デザイン]タブにある[クエリの種類]グループにある[追加]ボタンをクリックします。[追加]ダイアログボックスで[追加先]の[テーブル名]に[T_売上の履歴]を選択します。[OK]ボタンをクリックしてクエリに名前を付けて保存します。
追加クエリ

[追加クエリ]を実行するためのマクロを下のように作成します。
マクロ

このまま[F_単票]の更新後処理にマクロを指定してもいいのですが、このままだと
プロパティシート 更新後処理

[追加クエリを実行すると、テーブルのデータが変更されます]と[1件のレコードを追加します]という、以下のメッセージがクエリを実行する度に表示されるようになります。
メッセージウィンドウ

メッセージウィンドウ

面倒なので、マクロを下のようの編集します。マクロは右側にマウスをポイントすると[↑][↓]の矢印が表示されますので、この矢印で順番を変更することができます。
[アクションクエリ実行時の確認メッセージを非表示にする]も参考になると思います。
履歴 マクロ

テーブル[T_売上の履歴]を表示すると、下のようにデータを更新したレコードが追加されています。[更新日]がないレコードは削除するように削除クエリもマクロに取り込むといいですね。また、このテーブルを元にフォームを作成し、ボタンをクリックして履歴を閲覧できるようにすると、より便利です。
履歴テーブル

トラブルをすぐに解決したいならteratail

おすすめ記事

シェアする