【问题标题】:How do I prevent a duplicate file from being imported into an access table如何防止将重复文件导入访问表
【发布时间】:2015-03-02 07:58:40
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 这似乎是一个困难的设计。如果事实证明这是重复的一周(为什么会发生这种情况?)下周你会测试什么?有没有办法检查单个导入的记录是否重复,即某种唯一索引?
  • 我尝试想出一个唯一键来测试记录,但根据数据有困难。有一个发票 ID,我打算将其与产品 SKU 代码结合起来,但退货与销售具有相同的发票 ID,因此如果发生在同一天,则它不是唯一的。

标签: vba ms-access import duplicates


【解决方案1】:

请阅读我对@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

【讨论】:

    【解决方案2】:

    每条记录都应该“标记”日期时间(您肯定会在记录结构中设计类似 [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
    

    酌情修改。

    【讨论】:

    • 每条记录都应该通过添加[transaction]字段来加盖日期时间戳吗?不!我会说每条记录都应该由 UpdateID “标记”,它应该引用另一个表。
    • 每个销售交易通常都有一个唯一的ID,但总是有一个日期时间戳。无论那里有什么,他都可以使用。那里没有“更新”,只是备份数据......我认为。
    • 数据有交易日期,但没有附加时间,因此无法使用。但这是另一个想法。如何检查加载文件中的最新交易日期并查看它是否大于今天 - 7 天?这将确保包括上周的交易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2012-02-15
    • 2015-09-26
    • 1970-01-01
    • 2017-12-24
    • 2013-05-14
    • 1970-01-01
    相关资源
    最近更新 更多