2013-04-15 66 views
1

我正在構建一個Access數據庫,該數據庫從一個Excel轉儲的事務數據網站提供。這些交易都有一個唯一的標識符,但狀態會隨着交易的處理而改變。如何跟蹤對Access中事務狀態的更改?

以前,如果我們需要分析狀態的變化,我們會保留每週的Excel轉儲和挖掘。我們的'主'數據表是一個40,000行的Excel文件,從最新的轉儲中運行,這意味着我們丟失了舊的狀態數據。我無法訪問存儲所有這些信息的後端數據庫(如果存在的話),只有Excel生成的報告。

既然我正在將數據遷移到Access中,那麼捕獲特定事務可能經歷的不同階段有哪些選擇?

回答

1

一個相當直接的方法是創建一個與您的主表格(Access,Copy > Structure Only)具有相同結構的[ArchiveTable]表格,然後將[ArchivedOn]日期/時間列添加到[ArchiveTable]中。

當你得到一個新的Excel表,您可以將它導入訪問(例如,通過在VBA DoCmd.TransferSpreadsheet),然後做這樣的事情:

INSERT INTO ArchveTable (fieldname, fieldname, ..., ArchivedOn) 
SELECT fieldname, fieldname, ..., Now() AS ArchivedOn FROM MainTable 
WHERE MainTable.TransactionID IN (SELECT TransactionID FROM ImportTable) 

...然後做一些「完整性檢查」對[ArchiveTable]中的數據進行確認,以確保所有內容在進行之前都得到複製...

DELETE FROM MainTable 
WHERE MainTable.TransactionID IN (SELECT TransactionID FROM ImportTable) 

INSERT INTO MainTable (fieldname, fieldname, ...) 
SELECT fieldname, fieldname, ... FROM ImportTable 
+0

這太好了。特別感謝VBA的想法,也將探索這一點! – pedram