尝试在特定日期之前删除MS Access中的记录或报告

时间:2018-03-22 01:36:27

标签: database ms-access access-vba sql-delete

我有一个Microsoft Access数据库文件。 我想删除5年以上的记录。 我在开始修改文件之前做了一个备份。

我能够运行查询,然后运行下面的命令并将其附加或更新到数据库文件。

DELETE FROM Inspections Report WHERE Date <= #01/01/2013#

我使用了这个例子: Delete by Date In Access

记录似乎仍在那里。

我想要的输出:

类似于我要做的事情将是Microsoft Word文件的左下角,您可以在删除页面后看到第1页(共10页)时显示第1页(共5页)。

2 个答案:

答案 0 :(得分:0)

要从Access VBA运行续集命令,您需要在其前面添加DoCmd.RunSQLCurrentDb.Execute,然后将SQL编码放在引号中。

此外,该空间可能会导致问题 - 如果您要删除记录的表格被称为&#34;检查报告&#34;您将这两个单词括在方括号中以显示其单个实体。

最后&#34;日期&#34;在Access中是一个特殊的单词,当你将它用作字段名称时它并不喜欢它,因为它可能会在以后引用该字段时引起问题。您可能会尝试类似&#34; InspectionDate&#34;。

所以你的代码看起来像这样:

DoCmd.RunSQL "DELETE FROM [Inspections Report] WHERE InspectionDate <=#1/01/2013#"

如果您有一个静态日期,您可能只需要完成此过程一次,您可以在表格中通过过滤 - 在该日期之前过滤,使用 ctrl + a 选择符合该条件的所有内容,然后点击删除。它会询问您是否要删除它们,并且您可能会看到它尝试删除的记录数量只是满足您设置标准的数量。

当然,如果您对从未拥有超过特定年限的记录感兴趣,您可以使用原始编码(如> DATEADD("yyyy", -5, DATE()))进行操作,并将其设置为每次启动时执行数据库中。

答案 1 :(得分:0)

DELETE Table1。*,Table1.VisitDate 从表1 WHERE(((Table1.VisitDate)&lt; =#1/1/2013#));

我建议您创建查询对象并保存它,因此它会显示在导航窗格中,并且可以手动测试。 [在这种情况下,您使用查询设计视图,不需要上面的语法]

然后使用OpenQuery方法触发该查询。