2010-09-13 97 views
0

這當然是一個很長的過程,對於我的開發需求來說並不重要,所以如果沒有現成的解決方案,請注意;我不會太難過;)檢查正在更新/更改的字段值SQL(訪問)

我想知道是否有方法來查看字段值是否已更改或在Access中的日期範圍內更新。

例如,我有一個可以讀取「active」或「inactive」(通過驗證,本字段沒有相關表)的狀態字段,我想查看有多少記錄從「不活躍「在30天內變爲」活躍「。

我發現了一個解決方案,用於時間戳一個表單更新,如果最糟糕的情況變得更糟,我可以修改這個適用於一個字段,但我寧願能夠搜索值的變化比日期字段最後一次更改。

再說一遍,如果這會讓任何人感到不可能,那麼請不要太擔心自己。

問候,

安迪

+1

您可以規劃未來,但如果您沒有收集到這些信息,它將不可用。您可以參閱http://allenbrowne.com/appaudit.html – Fionnuala 2010-09-13 12:07:29

回答

0

你需要有一個改變歷史。

單獨的表,將行的關鍵字存儲爲外鍵,狀態和時間戳。每次更改都會在表格中插入新行。
根據您使用的技術,最簡單的方法是使用觸發器。觸發器可以檢查字段是否已更改odl.status <> new.status並在歷史記錄表中插入新行。

如果您不喜歡保留歷史記錄,那麼同一個表中只有一個字段可以完成這項工作。 該字段可以是日期時間,也可以在狀態更改時觸發器進行更新。

Timestamp will not do the job because if some other field is changed this field will be changed. 

所以在這種情況下,觸發器也可以完成這項工作。

但也取決於客戶端的類型,客戶端可以檢測該字段是否已更改並更新日期時間字段。

+0

觸發器僅適用於版本爲2010的Access。 – Fionnuala 2010-09-13 12:05:09

+0

然後一些代碼可以完成這項工作。 – darpet 2010-09-13 18:15:08

+0

那麼,如果您的數據表位於支持觸發器的數據庫中,則觸發器實際上可用於所有Access版本。 @Remou的意思是說,除了A2010發佈的版本之外,Jet/ACE沒有觸發器。 – 2010-09-13 21:48:31