我需要删除在我的访问数据库中链接的所有表。
这是返回所有链接表(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
来关闭我的所有牌桌,但我不知道该怎么做。
答案 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