【问题标题】:Trying to delete records or reports in MS Access before a certain date尝试在某个日期之前删除 MS Access 中的记录或报告
【发布时间】:2018-03-22 01:36:26
【问题描述】:

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

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

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

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

记录似乎还在里面。

我想要的输出:

与我尝试做的类似是在 Microsoft Word 文件的左下角,您会在其中看到第 1 页,共 10 页,而删除页面后它应该显示为第 1 页,共 5 页。

【问题讨论】:

  • 您需要用括号括住保留字和带有“特殊”字符的表/字段名称:DELETE FROM [Inspections Report] WHERE [Date] &lt;= #01/01/2013#

标签: database ms-access vba sql-delete


【解决方案1】:

删除 Table1.*、Table1.VisitDate 从表 1 WHERE (((Table1.VisitDate)

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

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

【讨论】:

    【解决方案2】:

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

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

    最后,“日期”是 Access 中的一个特殊词,当您将它用作字段名称时它不喜欢它,因为它在以后引用该字段时可能会导致问题。您可以尝试“InspectionDate”之类的方法。

    所以你的代码应该是这样的:

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

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

    当然,如果您对永远不会有超过特定年份的记录感兴趣,您可以使用原始编码中的某些内容,例如 &gt; DATEADD("yyyy", -5, DATE()),并将其设置为在每次启动数据库时执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多