2009-05-29 17 views
0

Microsoft Accessテーブルが最後に変更(挿入または更新)されたときを検出する方法について知っている人はいますか? ADO COM経由でOLEDBを使用してプログラムでアクセスデータベースと通信し、特定のテーブルの変更を検出する方法を探していました。これらの変更が何であるかを知る必要はなく、変更が加えられただけです。Microsoft Accessデータベーステーブルの最終変更時刻の検出

答えて

2

テーブル内のデータが変更されたかどうかを検出するための唯一の方法は、テーブルに対してクエリを実行することです。

あなたは、例えば、テーブルにタイプDATETIMEの列を追加する必要があります各行の最終更新日時を示すLastUpdatedDateという名前です。各INSERTまたはUPDATEの更新されたDATETIME値をその列に書き込む必要があるように、NOT NULLにします。また、現在の日付スタンプの場合はDATE()、現在の日付/時刻スタンプの場合はNOW()になるように列を設定します。次に、検証ルールまたはCHECKという制約を追加します。 CHECK (LastUpdatedDate = NOW())を使用して、各列が実際にUPDATEおよびINSERTで更新されていることを確認します。

最後にMAX(LastUpdatedDate)クエリを実行すると、必要なものが得られます。

0

方法が「手動」の欄には、テーブルにアクセスするたびに書き込むことなくありません。

0

他の人も指摘しているように、コーディングを行わずに変更を追跡する方法はありません。

ACC2000での簡単な例があります:フォームに http://support.microsoft.com/default.aspx?scid=kb;en-us;Q197592

監査証跡を記録した変更の監査証跡を作成する方法 - のレコード・レベルでの変更をログに記録: http://allenbrowne.com/AppAudit.html 記事は編集、挿入を扱いますフォームとサブフォームを削除します。

モジュール:変更の履歴を保持 http://www.mvps.org/access/modules/mdl0021.htm 履歴テーブルルーチンは、1つ以上のテーブルのフィールドに対する変更を追跡する履歴レコードを作成するように設計されています。

+0

ADO COM経由でOLEDBを使用してアクセスデータベースとプログラムで通信する場合、これらのいずれも機能しないと思います。 – onedaywhen

0

テーブルにタイムスタンプ列を実装し、データ変更中に値を更新する必要があります。

関連する問題