如何防止将重复文件导入访问表

时间:2015-01-04 17:39:29

标签: vba ms-access import duplicates

我有一个用于销售报告的访问数据库。我正在自动化每周从销售点导入销售交易的流程。我想开发一种方法来执行简单的检查,以验证正在导入的文件与前几周文件不同。

该文件将始终具有相同的文件名,并且位于我编写的宏运行时访问将查找的同一文件夹中。

我建议的解决方案是创建一个临时表,用于将销售交易加载到该临时表中并进行备份以进行比较。每周我都会备份临时表,该临时表将包含上周的事务,然后将新文件加载到临时表中。要验证加载的新文件与前一周不同,我会将备份表和登台表的“total sell”列中的值相加并比较值。

我需要帮助来创建代码/查询来执行此操作以及如何将其插入到我构建的宏中。或者帮助提出任何其他解决方案。

我在网上搜索了很多但是没有找到解决方案。

这是示例数据的链接 https://drive.google.com/file/d/0BwD_Ubcf_4voSnN2elFvTWI2QTA/view?usp=sharing

2 个答案:

答案 0 :(得分:0)

每条记录都应该是DateTime“标记”(你肯定会在你的记录结构中设计类似[Transaction_DateTime]字段的东西)。如果您导入的文件确实是“严格”每周一次,则只能检查一条记录以查看这是新文件还是旧文件。否则,请检查所有。

修改 您不需要时间部分,日期就足够了。假设你将数据导入记录集,你将需要这样的东西(暴力行为会很好,也很快:

rstX.MoveFirst
Do
    If rstX("Trans Date") <= Date - 7 Then
        MsgBox "Found a transaction less that 1 week old!"
        Exit Do
    End If
    rstX.MoveNext 
Loop Until rstX.EOF
If rstX.EOF Then
    MsgBox "All transactions are at least 1 week old!"
End IF

根据需要进行修改。

答案 1 :(得分:0)

请阅读我对@Gene Skuratovsky解决方案的评论。我建议在那里创建另一个表(伪代码):

TABLE ImportedFiles
(
   ImportID Integer PrimaryKey,
   FilePath String,
   ImportDate Date
)

在开始导入文件之前,您需要检查相应表中是否存在记录;)

您可以使用DLookup function检查记录是否存在。

Function FileHasBeenImported(ByVal sFullFileName As String) As Boolean
    FileHasBeenImported = (DLookup("[FilePath]", "ImportedFiles", "[FilePath] =" & sFullFileName )<>"")
End If