在 MS Access (2007-2013) 中删除除一个之外的所有表

Posted

技术标签:

【中文标题】在 MS Access (2007-2013) 中删除除一个之外的所有表【英文标题】:Drop All Tables Except One in MS Access (2007-2013) 【发布时间】:2019-03-26 02:58:15 【问题描述】:

我正在尝试删除除 Access 中的一个表之外的所有表。这是在本地完成的,因此没有链接表和关系。我要保留的表是“日志”(历史记录)。

我打算删除三个表和两个导入错误表。这是一个每月的过程,导入错误表每个月的名称可能不同,因此一些菊花链式 DROP TABLE "Table1_ImportErrors" 查询不一定有效。

代码here 似乎不适用,因为我只能真正命名我想要保留的表(这指定要按名称删除的表 - 在导入错误的情况下我不会这样做)。

我目前拥有的是:

-dbo.Table1

-dbo.Table2

-dbo.Table3

-dbo.T2Sheetname_ImportErrors

-dbo.T3Sheetname_ImportErrors

-dbo.Log

-9 查询

-4 宏

-2 模块

我想保留所有查询、宏、模块和 dbo.Log。

我只是在学习 VBA,但不清楚在这里做什么。也可以在此处使用查询或其他方法。感谢您提供任何意见,并很高兴回答任何问题。

编辑:以下对我有用。

Private Sub
DoCmd.DeleteObject acTable, "Table1"
DoCmd.DeleteObject acTable, "Table2"
DoCmd.DeleteObject acTable, "Table3"

Dim tdf as TableDef
    For Each tdf In CurrentDb.TableDefs
        If Right(tdf.Name, 12) = "ImportErrors" Then
            DoCmd.DeleteObject acTable, tdf.Name
        End If
    Next tdf
End Sub

【问题讨论】:

【参考方案1】:

以下是谷歌搜索“msaccess for all tables”和“msaccess vba delete table”等短语的结果。使用 Google,它是您的朋友。

根据 msgbox sez,您可能需要过滤“dbo.Log”或“Log”。

'From  https://***.com/questions/17555174/how-to-loop-through-all-tables-in-an-ms-access-db 

    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Set db = CurrentDb
    For Each tdf In db.TableDefs
        ' ignore system and temporary tables
        If Not (tdf.name Like "MSys*" Or tdf.name Like "~*") Then
            If tdf.name <> "Log" Then
            MsgBox("deleting " & tdf.name)
            '  from https://***.com/questions/15945297/what-is-the-difference-between-docmd-deleteobject-actable-vs-drop-table
            'DoCmd.DeleteObject acTable, tdf.name
        End If
        End If
    Next
    Set tdf = Nothing
    Set db = Nothing

【讨论】:

感谢您的回复。我已经尝试过谷歌搜索,我也找到了这个答案。如此处实现的,代码无法正常运行。它在对话框(MsgBox)中为我提供了许多项目的通知消息,但实际上并没有删除其中的任何一个。我知道的不够多,无法解析出什么不起作用。我没有收到任何错误消息,只是来自 MsgBox 的通知。 @TJ15 是的,它会为您提供验证测试的消息。我希望您确保在实际运行它之前找到并选择删除正确的表。准备好后,将 MsgBox 更改为 Debug.Print 并从 'DoCmd 行中删除注释标记以实际执行删除。

以上是关于在 MS Access (2007-2013) 中删除除一个之外的所有表的主要内容,如果未能解决你的问题,请参考以下文章

在 MS Access 中触发

MS Access:突出显示 MS Access 报告中的特定字段

在 MS-Access 中插入带日期时间的 SQL 命令

在 ms-access 中获取表的外键约束列表?

在 MS-Access 中禁用除报告(打印预览)之外的功能区栏

经典 ASP 和 ms-access:插入数据的问题