删除VBA中的所有链接表

时间:2017-06-22 12:39:52

标签: vba ms-access access-vba

我需要删除在我的访问数据库中链接的所有表。

这是返回所有链接表(odbc和访问链接表)的查询:

SELECT [MSysObjects].[Name] FROM MSysObjects WHERE Left([Name],1) <> "~" AND (MSysObjects.Type = 6 OR MSysObjects.Type = 4) ORDER BY MSysObjects.Name;

但是现在我认为我必须使用此for each DoCmd.DeleteObject acTable, Table.name来关闭我的所有牌桌,但我不知道该怎么做。

2 个答案:

答案 0 :(得分:2)

For Each以无序顺序迭代集合,并在迭代期间删除该集合中的对象,这是您遇到错误的原因。

我建议你以相反的顺序迭代整个集合,以便使用以下命令删除TableDef对象:

Dim dbs As DAO.TableDef
Dim tdf As DAO.TableDef
Set dbs = CurrentDb
For index = dbs.TableDefs.Count – 1 To 0 Step -1
    Set tdf = dbs.TableDefs(index)
    If Left(tdf.Connect, 5) = "ODBC;" Then
    DoCmd.DeleteObject acTable, tdf.Name
    End If
Next index

答案 1 :(得分:1)

Dim rs as New ADODB.Recordset
Dim strSql as string

strSql = [put your sql statement here]

rs.open strSql, CurrentProject.connection
Do while not rs.eof
   Docmd.DeleteObject acTable,rs.Fields(0)
   rs.MoveNext
Loop
rs.Close