在 Ms access 中一次性删除所有表
Delete all tables in one shot in Ms access
这是我的 VBA 代码,它试图遍历名称中包含 PB
(PB 是所有表的前两个字母)的所有表并删除它们。我在 DoCmd
行
收到错误消息
Option Compare Database
Option Explicit
Public Sub del_all_tables()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
For Each tdf In db.TableDefs
If Not (tdf.Name Like "PB*") Then
DoCmd.DeleteObject acTable, tdf.Name
End If
Next
End Sub
编辑:我不想删除表本身,而是删除表中的记录
我的原始代码是删除所有 table 无效的代码。我从这里获取了源代码。 https://access-excel.tips/access-vba-loop-through-all-tables/
但是如果您想一次删除多个 table 中的所有记录,则需要分别为每个 table 创建删除查询。
然后您可以使用 VBA 打开每个查询并 运行 使用以下代码:
Option Compare Database
Option Explicit
Public Function RunMyqueries()
DoCmd.OpenQuery "Query1"
DoCmd.OpenQuery "Query2"
MsgBox "Done!"
End Function
就我而言,我有 2 个查询,如果您有更多查询,请继续添加。
此外,您可能希望每次在删除带有 DoCmd.SetWarnings False
的记录之前关闭警告
首先是 docmd 语句中的对象名称导致错误,因为您没有调用完整的对象名称,而是尝试使用 like 运算符。
其次,如果你想删除记录而不是 table,那么你必须使用删除语句。
您可以尝试一下查询设计视图,感受一下 access 中的删除 statement/query 是怎样的。
使用 DELETE 操作 SQL 删除记录。使用 CurrentDb.Execute
,不必担心关闭和打开警告。
CurrentDb.Execute "DELETE FROM [" & tdf.Name & "]"
.
如果您只想从以 PB
开头的表中删除记录,请从条件中删除 Not
- 否则您将从所有其他表(包括坏的系统表)中删除。
Public Sub del_all_records()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
For Each tdf In db.TableDefs
If tdf.Name Like "PB*" Then
db.Execute "DELETE FROM [" & tdf.Name & "]"
End If
Next
End Sub
这是我的 VBA 代码,它试图遍历名称中包含 PB
(PB 是所有表的前两个字母)的所有表并删除它们。我在 DoCmd
行
Option Compare Database
Option Explicit
Public Sub del_all_tables()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
For Each tdf In db.TableDefs
If Not (tdf.Name Like "PB*") Then
DoCmd.DeleteObject acTable, tdf.Name
End If
Next
End Sub
编辑:我不想删除表本身,而是删除表中的记录
我的原始代码是删除所有 table 无效的代码。我从这里获取了源代码。 https://access-excel.tips/access-vba-loop-through-all-tables/
但是如果您想一次删除多个 table 中的所有记录,则需要分别为每个 table 创建删除查询。
然后您可以使用 VBA 打开每个查询并 运行 使用以下代码:
Option Compare Database
Option Explicit
Public Function RunMyqueries()
DoCmd.OpenQuery "Query1"
DoCmd.OpenQuery "Query2"
MsgBox "Done!"
End Function
就我而言,我有 2 个查询,如果您有更多查询,请继续添加。
此外,您可能希望每次在删除带有 DoCmd.SetWarnings False
首先是 docmd 语句中的对象名称导致错误,因为您没有调用完整的对象名称,而是尝试使用 like 运算符。
其次,如果你想删除记录而不是 table,那么你必须使用删除语句。
您可以尝试一下查询设计视图,感受一下 access 中的删除 statement/query 是怎样的。
使用 DELETE 操作 SQL 删除记录。使用 CurrentDb.Execute
,不必担心关闭和打开警告。
CurrentDb.Execute "DELETE FROM [" & tdf.Name & "]"
.
如果您只想从以 PB
开头的表中删除记录,请从条件中删除 Not
- 否则您将从所有其他表(包括坏的系统表)中删除。
Public Sub del_all_records()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
For Each tdf In db.TableDefs
If tdf.Name Like "PB*" Then
db.Execute "DELETE FROM [" & tdf.Name & "]"
End If
Next
End Sub