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やクエリを使って変更内容を記録する方法が有効です。これにより、データが変更された際の履歴を簡単に追跡することができ、後日必要に応じて過去のデータに戻すこともできます。

コメント