如何跟踪Access中事务状态的更改?

时间:2013-04-15 17:18:32

标签: database ms-access

我正在构建一个Access数据库,该数据库是从网站上的Excel转储中提供的,用于处理事务数据。这些事务都具有唯一标识符,但状态将随着事务的处理而更改。

以前,如果我们需要分析状态的变化,我们会保留每周的Excel转储并进行挖掘。我们的主人'数据表是从最新转储运行的40,000行Excel文件,这意味着我们丢失了旧的状态数据。我无法访问存储所有这些信息的后端数据库(如果有的话?),只能访问Excel生成的报告。

现在我正在将数据迁移到Access中,有哪些选项可以捕获特定事务可能经历的不同阶段?

1 个答案:

答案 0 :(得分:1)

一种相当直接的方法是创建一个[ArchiveTable]表,其结构与Main表相同(在Access中,Copy > Structure Only),然后将[ArchivedOn]日期/时间列添加到[ ArchiveTable]。

当您获得新的Excel工作表时,可以将其导入Access(例如,通过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