Microsoft Accessでデータの変更履歴を保存する方法

Microsoft Access

Microsoft Accessでデータベースを管理する際、一度入力したデータを後日変更した場合、その変更履歴を保存する方法が必要になることがあります。この記事では、データの変更履歴を保存する方法とその実装方法について解説します。

変更履歴を管理する理由

データベースの運用において、入力されたデータが変更された履歴を保存することは非常に重要です。これは、誤って変更されたデータを追跡したり、以前の状態に戻すための重要な情報となります。

変更履歴を保存する方法

Microsoft Accessでデータの変更履歴を保存する方法として、いくつかのアプローチがあります。その中でも最も一般的なのは、履歴専用のテーブルを作成して、変更の都度新しいレコードを追加する方法です。

履歴テーブルの作成

履歴を管理するためには、まず新しいテーブルを作成します。たとえば、元のテーブル(「顧客情報」)の変更履歴を保存するために「顧客履歴」テーブルを作成します。

顧客履歴テーブルの例:
顧客ID (主キー)
変更日
旧データ(名前、住所など)
新データ(名前、住所など)

このように、変更前と変更後のデータを保存できる構造を作ります。

変更履歴の自動保存

変更履歴を自動的に保存するためには、クエリやVBA(Visual Basic for Applications)を利用することができます。特に、フォーム上でデータが変更された際に、自動で履歴テーブルに記録を追加するように設定できます。

VBAを使用した変更履歴の保存

フォームの「Before Update」イベントを利用して、データが変更される前にその情報を履歴テーブルに追加することができます。以下のコードは、データが変更される前に変更前のデータを履歴テーブルに記録する例です。

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim strSQL As String
    strSQL = "INSERT INTO 顧客履歴 (顧客ID, 変更日, 旧名前, 旧住所, 新名前, 新住所) "
    strSQL = strSQL & "VALUES (" & Me.顧客ID & ", Now(), '" & Me!名前.OldValue & "', '" & Me!住所.OldValue & "', '" & Me!名前 & "', '" & Me!住所 & "')"
    DoCmd.SetWarnings False
    DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
End Sub

このコードは、顧客情報が変更される前に、変更前と変更後の名前と住所を「顧客履歴」テーブルに保存します。

履歴の利用方法と表示方法

履歴テーブルに保存されたデータは、後から簡単に参照することができます。例えば、履歴を参照するクエリを作成して、特定の顧客の変更履歴を確認することができます。

変更履歴をクエリで表示する

SELECT 顧客ID, 変更日, 旧名前, 新名前
FROM 顧客履歴
WHERE 顧客ID = 1
ORDER BY 変更日 DESC;

このクエリは、特定の顧客(顧客ID = 1)の変更履歴を、最新の変更から順に表示します。

まとめ

Microsoft Accessでデータベースの変更履歴を保存するためには、履歴専用のテーブルを作成し、VBAやクエリを使って変更内容を記録する方法が有効です。これにより、データが変更された際の履歴を簡単に追跡することができ、後日必要に応じて過去のデータに戻すこともできます。

コメント

タイトルとURLをコピーしました