Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除VBA中的所有链接表_Vba_Ms Access - Fatal编程技术网

删除VBA中的所有链接表

删除VBA中的所有链接表,vba,ms-access,Vba,Ms Access,我需要删除access数据库中链接的所有表 这是返回所有链接表(odbc和access链接表)的查询: 选择[MSysObjects]。[Name] 来自MSysObjects 其中左([Name],1)“~”和(MSysObjects.Type=6或MSysObjects.Type=4) 按MSysObjects.Name排序 但是现在我想我必须用这个DoCmd.DeleteObject acTable,Table.name为每个做一个,以便关闭所有的表,但是我不知道该怎么做。对于每个对象,都

我需要删除access数据库中链接的所有表

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

选择[MSysObjects]。[Name]
来自MSysObjects
其中左([Name],1)“~”和(MSysObjects.Type=6或MSysObjects.Type=4)
按MSysObjects.Name排序


但是现在我想我必须用这个
DoCmd.DeleteObject acTable,Table.name
为每个
做一个
,以便关闭所有的表,但是我不知道该怎么做。

对于每个对象,都会以非有序的顺序迭代一个集合,而在迭代过程中删除该集合中的一个对象就是您遇到错误的原因

我建议您按照顺序相反的顺序遍历集合,使用以下命令删除TableDef对象:

Dim dbs As DAO.Database
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

我有一个错误:对象变量在这一行“rst.Open sql,CurrentProject.Connection”上未定义对不起,我现在在第一行添加了实例化。缺少
New
关键字。缺少
Set dbs=CurrentDb
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