Google検索

Windows7 & Office2010 Access2010

変更履歴テーブルの作成

投稿日:2017年1月7日 更新日:

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

変更履歴テーブル

参考ここでは、ウィンドウの表示は[ウィンドウを重ねて表示する]の設定にしています。

[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い

Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。従来からAccessを使用している方に ...

続きを見る

テーブルの確認


[T_売上]テーブルは、下のようになっています。

[T_売上]テーブル

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

[T_売上]テーブルのデザインビュー

売上履歴テーブルの作成

この[T_売上]テーブルをコピーして、[T_売上の履歴]テーブルを作成します。

テーブルの構造のみをコピー

[T_売上]テーブルをコピーします。

[T_売上]テーブルで右クリックして、ショートカットメニューから[コピー]をクリックします。

ショートカットメニューの[コピー]

そして、ナビゲーションウィンドウで右クリックして[貼り付け]をクリックします。

ショートカットメニューの[貼り付け]

すると、以下の[テーブルの貼り付け]ダイアログボックスが表示されますので、[テーブル構造のみ]を選択します。

名前は[T_売上の履歴]とします。[OK]ボタンをクリックして閉じます。

[テーブルの貼り付け]ダイアログボックス

ナビゲーションウィンドウに[T_売上の履歴]テーブルが作成されます。データは空っぽです。

[T_売上の履歴]テーブルをデザインビューで開きます。

[ID]の主キーは削除して、重複のレコードが保存できるようにします。

履歴テーブル作成

帳票フォームと単票フォーム

[F_帳票]フォームの[開く]ボタンをクリックすると[F_単票]フォームが開くように設定しています。

これについては、以下の記事を参照してください。

帳票フォームから同じIDの単票フォームを起動するには

Accessで、帳票フォームから同じIDの単票フォームをボタンで起動する方法を解説します。 横に長い情報より、1つのウィンドウで表示したいと ...

続きを見る

この[F_単票]フォームでいずれかのコントロールの値を変更したら、更新日時が自動取得され、そのデータが[T_売上の履歴]に保存されるようにします。

帳票フォームから単票フォームを開く

単票フォームの更新日時を取得する[埋め込みマクロ]

[更新日時]が自動的に取得されるようにします。

[F_単票]フォームのプロパティを開いて、「イベント」タブの[更新前処理]の[...]ボタンをクリックします。

[選択の種類]が[フォーム]になっていることを確認してください。

フォームプロパティの更新前処理

[ビルダーの選択]ダイアログボックスが表示されます。

[マクロビルダー]を選択して、[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックス

以下のように[新しいアクションの追加]で[値の代入]を選択して、アイテムに[更新日]、式に[Now()]と入力します。

マクロは保存して閉じます。

埋め込みマクロの設定

フォームのプロパティの[更新前処理]には、以下のように[埋め込みマクロ]と表示されます。

フォームのプロパティ[イベント]タブ

これでフォーム[F_単票]のコントロール内で更新があれば、[更新日]フィールドに更新日時が保存されるようになります。

参考更新日時の取得については、以下の記事でも解説しています。以下の記事ではイベントプロシージャを使っています。

レコードの更新日時を保存する

Accessで更新日時を保存したいということは多いですね。 テーブルに[更新日時]フィールドを追加 まず、テーブルに[更新日時]という[日付 ...

続きを見る

追加クエリの作成

追加クエリを作成します。

[T_売上]テーブルを元に下のように設定します。

フィールド[ID]の抽出条件も忘れないように入力します。

 [forms]![F_帳票]![ID]

[デザイン]タブにある[クエリの種類]グループにある[追加]ボタンをクリックします。

[追加]ダイアログボックスで[追加先]の[テーブル名]に[T_売上の履歴]を選択します。

[OK]ボタンをクリックしてクエリに名前を付けて保存します。

ここでは、[Q_売上 追加クエリ]としています。

追加クエリ

更新後に追加クエリを実行する[埋め込みマクロ]

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

今度は、フォームプロパティの[イベント]タブの[更新後処理]の[...]ボタンをクリックします。

フォームプロパティの[更新後処理]

[ビルダーの選択]ダイアログボックスが表示されたら、[マクロビルダー]を選択して[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックス

以下のように[新しいアクションの追加]で[クエリを開く]を選択して、クエリ名に[Q_売上追加クエリ]を選択します。

フォームの更新後処理の埋め込みマクロ

このまま[F_単票]の[更新後処理]にマクロを指定してもいいのですが、このままだと[追加クエリを実行すると、テーブルのデータが変更されます]と[1件のレコードを追加します]という、以下のメッセージがクエリを実行する度に表示されるようになります。

メッセージウィンドウ

メッセージウィンドウ

マクロの編集

面倒なので、マクロを下のように[メッセージの設定]を追加して、[メッセージの表示]を[いいえ]に編集します。

[クエリを開く]アクションの前に設定します。

参考[メッセージの設定]は、[マクロツール]-[デザイン]タブの[表示/非表示]グループにある[すべてのアクションを表示]をクリックしないと一覧に表示されません。

マクロは右側をマウスでポイントすると[↑][↓]の矢印が表示されますので、この矢印でアクションの順番を変更することができます。

フォームの更新後処理の埋め込みマクロ

アクションクエリ実行時のメッセージを非表示にする方法は、以下の記事も参考になると思います。

アクションクエリ実行時の確認メッセージを非表示にする

以下のメッセージウィンドウは、追加クエリを実行したときに表示されるメッセージです。このメッセージを非表示にする方法です。 場合によっては、確 ...

続きを見る

フォーム[F_単票]プロパティの[イベント]タブは以下のようになります。

フォームのプロパティ

フォーム[F_単票]で編集するたびに、テーブル[T_売上の履歴]に追加されていきます。

変更履歴テーブル

また、テーブル[T_売上の履歴]をもとにフォームを作成し、ボタンをクリックして履歴を閲覧できるようにすると、より便利です。

コマンドボタンをクリックしてフォームを開く方法は、以下の記事で解説しています。

ウィザードを使ったコマンドボタンの作成

Accessで起動時にメニューフォームを表示した後、ボタンをクリックして目的のフォームを開くようにしたいという要望はよくあります。 コマンド ...

続きを見る

関連以下は、アクションクエリに関する記事です。

追加クエリの作成と追加先テーブルの変更

1つのテーブルに別のテーブルのレコードを追加する方法です。 3個テーブルがあって、各テーブルのフィールド名は同じです。 ここでは例として、テ ...

続きを見る

グループ化で重複レコードを削除したテーブルを作成

Access2013で、1つのテーブルで重複したレコードを削除してマスターテーブルを作成する方法です。 テーブルの確認 以下のようなテーブル ...

続きを見る

差分を追加(追加クエリ)

Accessで2つのテーブルの不一致レコードを抽出した後、その差分レコードをテーブルへ追加する方法です。 参考ここでは[ドキュメントウィンド ...

続きを見る

追加クエリを使ったオートナンバー型フィールドの番号の振り直し

オートナンバー型のあるテーブルでレコードを削除すると、欠番が出てしまいます。 Accessにとっては問題はなくても、見た目としては1から綺麗 ...

続きを見る

以下の記事ではアクションクエリについてもまとめています。

削除クエリを使ってすべてのレコードを削除するには

Accessでテーブルのすべてのレコードを削除するには、すべてのレコードを選択して削除する方法もありますが、削除クエリを使って簡単に削除する ...

続きを見る

[メモ型]フィールドを使用すると、履歴を表示することができます。Access2013以降は、[長いテキスト]という名称になっています。

更新履歴の表示

Access2007からのファイル形式である[.accdb]では、[メモ型]フィールドで変更履歴を保存することができます。 参考Access ...

続きを見る

Profile

執筆者/はま

おすすめ記事と広告

-Windows7 & Office2010 Access2010

Copyright © 2001-2019 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2019 AllRights Reserved Powered by AFFINGER4.