【发布时间】:2019-07-01 17:59:49
【问题描述】:
我有一个 MS Access 数据库,我正在尝试对名为 tblPrevious 的表进行重复数据删除。我创建了一个仅从表中选择不同值的记录集,我想使用该记录集覆盖原始表。我无法使用普通的生成表查询,因为我不能使用tblPrevious 作为目标表和源表。所以我的计划是通过vba创建一个记录集,然后删除原表,然后使用记录集填充一个与原tblPrevious同名的新表。我的另一个选择是创建一个名为tblPrevious2 的新表,然后删除tblPrevious,然后将tblPrevious2 重命名为tblPrevious。这对我来说似乎太乱了。以下是我尝试的 vba,但收到一条失败消息,提示“运行时错误 3078,Microsoft Access 数据库引擎找不到输入表或查询“rst”。提前感谢您的帮助!
Sub RemovePreviousDupes()
Dim rst As Recordset Set rst = CurrentDb.OpenRecordset(Name:="DeDupetblPreviousExport", Type:=RecordsetTypeEnum.dbOpenDynaset)
strSQL = "SELECT rst.* INTO DELETETABLE FROM rst;"
DoCmd.RunSQL (strSQL)
End Sub
为DeDupetblPreviousExport 添加了 SQL。另请注意,在上面的代码中,我只是试图将记录集写入一个新表,如果我要让它工作,我会尝试删除tblPrevious,上面的最后一行将写入tblPrevious,而不是DELETETABLE
SELECT DISTINCT tblPreviousExport.[Month Reported], tblPreviousExport.[Employee SSN],
tblPreviousExport.[Employee First Name], tblPreviousExport.[Employee Last Name],
tblPreviousExport.Pool, tblPreviousExport.OpCo, tblPreviousExport.Paygroup,
tblPreviousExport.[Effective Date], tblPreviousExport.[Medical Plan],
tblPreviousExport.[Coverage Level], tblPreviousExport.Type,
tblPreviousExport.[Tier Change Effective Date], tblPreviousExport.[Num Eligible Months],
tblPreviousExport.[Employee Ongoing Contribution],
tblPreviousExport.[Full Employer Contribution],
tblPreviousExport.[Prorated Employer Contribution],
tblPreviousExport.[ER Contribution Already Received],
tblPreviousExport.[Total Contribution], tblPreviousExport.[Max Contribution]
FROM tblPreviousExport;
【问题讨论】:
-
为什么不删除原始表中的副本?请显示DeDupetblPreviousExport的查询来源。
-
感谢您的快速回复!不确定删除原始表中重复数据的最佳方法。我正在尝试这个,因为它似乎是我知道如何做的最简单的方法。如果您有更快/更简单的方法,那么我很想尝试一下。