关闭使用附加查询打开的 MS Access laccdb 文件
Posted
技术标签:
【中文标题】关闭使用附加查询打开的 MS Access laccdb 文件【英文标题】:Close an MS Access laccdb file that was opened with an append query 【发布时间】:2020-01-25 00:34:57 【问题描述】:我正在访问前端文件中从 VBA 运行附加查询。该查询在另一个未连接到前端的数据库中的表上运行。 (它是来自连接后端的数据存档)这里是查询:
DoCmd.RunSQL "INSERT INTO " & tblNames(i) & " IN '" & archiveFile & "' " & _
"SELECT " & tblNames(i) & ".* " & _
"FROM " & tblNames(i) & ""
我正在使用一个数组来循环浏览我要归档的每个表。并且“archiveFile”变量作为参数传入,具体取决于我需要将数据发送到哪个 accdb 文件。
我的问题是: sql 语句有效,但完成后存档文件仍处于锁定状态。换句话说,为我附加到的存档文件打开了一个 laccdb,它会保持打开状态,直到我关闭前端(我运行 vba 的文件)
我的问题;有没有办法关闭由“DoCmd.RunSQL”建立的连接,我可以说我没有打开任何我可以关闭的东西。但是正在创建一些东西并悬而未决...在此先感谢。如果需要,我很乐意澄清或分享我的更多代码。 (如果有更好的方法,我会全力以赴)
更新:
我尝试从 gui 而不是从 VBA 代码运行查询,得到了相同的结果。 laccdb 文件已创建并且无法删除,除非我关闭运行查询的前端。我希望有一种方法可以调用打开的连接然后关闭它们。
【问题讨论】:
这是正常行为。无需担心。 我同意在对数据库文件中的数据运行查询时显示锁定文件是正常的。但是问题是锁定文件不会消失。这种行为是不可取的或不正确的,尽管我不得不同意在使用 Access 时如果不正常的话是常见的。 :) 【参考方案1】:我一直在玩数据连接,不仅使用存档文件(未链接到前端),还使用链接的后端。我发现这篇文章performanceldblocking 是关于通过维护与后端文件的永久链接来提高性能的。在我这样做之后,不知何故,虽然它似乎与我有些无关,但存档锁定文件并没有粘住。当各种查询运行时,它会闪烁,当它们完成归档数据时,锁定文件就消失了,不再引起问题。
同样,我不确定具体原因,但设置到后端的持久连接似乎已经解决了这个问题,这样存档文件就不会因为我的前端仍然连接到它而感到困惑。
【讨论】:
以上是关于关闭使用附加查询打开的 MS Access laccdb 文件的主要内容,如果未能解决你的问题,请参考以下文章