【问题标题】:MS Access: "Cannot open any more databases."MS Access:“无法再打开任何数据库。”
【发布时间】:2022-02-05 10:35:59
【问题描述】:

在 StackOverflow[1234] 上多次讨论了 Access 错误“无法打开更多数据库。”。 Bytes.com 上还有一个有趣的discussion of the error,其中 Allen Brown 和 David Fenton 权衡了可能导致错误的原因,并争论其背后的限制是否与连接或表句柄有关。据我所知,这些地方的原因或解决方案都不适用于我的情况。

我有一个运行良好的复杂数据库,但随后开始抛出此错误。我已将 VBA 代码和数据结构归结为以下基本内容:

Option Explicit

Public Function TestFunction(ID_test_1 As Integer, nID_test_2 As Integer) As Variant

Dim oCurDb_Ftn As DAO.Database, oTestData As DAO.Recordset, sSQL As String, vTestCode As Variant

Set oCurDb_Ftn = CurrentDb()
sSQL = "SELECT * FROM t_test_2 WHERE ID_test_2 = " & nID_test_2 & ";"
Set oTestData = oCurDb_Ftn.OpenRecordset(sSQL)
vTestCode = oTestData![bValue]

oTestData.Close
Set oTestData = Nothing
Set oCurDb_Ftn = Nothing

TestFunction = vTestCode

End Function    ' TestFunction

表格中的数字是任意的。字段ID_test_n 是主键。上面的代码就是TestModule的全部内容。查询TestQuery 是:

SELECT t_test_1.ID_test_1, TestFunction(ID_test_1,3) AS [Test code]
FROM t_test_1;

打开查询时,乍一看似乎没问题。但是如果我向下滚动它,它会抛出“无法再打开”错误:

我发现了一种可以消除错误的方法。如果我去掉函数TestFunction()的第一个参数,那么它的定义就变成了:

Public Function TestFunction(nID_test_2 As Integer) As Variant
...

查询中对它的调用就变成了:

TestFunction(3)

然后我可以在查询表中上下滚动多次而不会出错。这些更改是可能的,因为在函数的基本代码中,没有对ID_test_1 的引用。但是在实际的数据库中,传递该参数是有原因的,而忽略它不是一种选择。尽管如此,如果没有传递该参数,导致错误的任何原因都不会发生,这对我来说很神秘。

谁能看到这里发生了什么,为什么我会收到这个错误,以及如何在不排除函数参数的情况下修复它?

环境:Windows 10 Pro 64 位,Access 2019。

【问题讨论】:

  • 我没有查看您的代码,但我遵循了此视频中的建议,并设法通过我今天运行的代码避免了这个问题:youtu.be/zPC0dhgVYeg

标签: vba ms-access runtime-error


【解决方案1】:

这可能是由于 2022 年 1 月 26 日左右的 Office 更新中的错误造成的。请参阅 Reddit post

尝试系统还原以回滚更新;或者...

进入访问、文件选项、信任中心并添加本地前端目录,然后选中该框以将后端数据位置添加为受信任位置。

【讨论】:

  • 另外,正如我在第 1 条评论中列出的视频中所述,请务必在添加位置时选中该框以包含子文件夹。
  • @UsuallyConfused - 谢谢。所以现在我知道我不是疯了。您的 Reddit 链接将我带到了一个 MS 论坛,这使我获得了有关问题和解决方法的更正式的报告:devhut.net/another-access-bug-cannot-open-any-more-databases。我会说您列出的第二个解决方案最好先尝试,我这样做了,它奏效了!经过三天的拉扯我的头发。
  • 顺便说一句,可信位置与计数表句柄有任何关系似乎很奇怪。
猜你喜欢
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多