【问题标题】:Getting Error 3048: Cannot open any more databases出现错误 3048:无法打开更多数据库
【发布时间】:2015-05-29 01:19:35
【问题描述】:

我最近拆分了我的数据库。我的表单是一个带有Tab 的日历,用于月视图、周视图和日视图,分别有 42、7 和 7 个子表单。所有这些子表单都是未绑定的。当一个选项卡被选中时,该选项卡中的所有子表单都会被分配一个ControlSource,而所有其他子表单的ControlSource 都会被清除。

月视图是唯一一个在加载 23 个子表单后获得Error 3048: Cannot open any more databases. 的视图(Tab 之外还有一些标签、列表和按钮,但我认为它们并不重要)。

选择月视图选项卡时,会发生以下操作:

  1. 一个 42x2 的数组填充了Long 日期信息
  2. 所有子表单都被清除其SourceObject
  3. 对于选定选项卡中的所有子表单:分配其SourceObject,然后调用一个函数(位于子表单中)给Filter 本身。在这个函数中,另一个函数被调用来根据一些标准计算子表单中的记录数。这里创建了一个数据库和记录集,经过多次传递,记录集为Closed

子表单包含几个文本框,其中一个包含用于着色的条件格式。它的记录源是查询:

SELECT tblTask.JobNum, tblJob.JobNum, tblTask.Sequence, tblJob.Closed, tblJob.Certified, tblEstimator.SortID, tblDivision.SortID, tblJob.EstimatorID, tblTask.DivisionID, tblJob.JobSite, tblJob.Customer, tblJob.Closed, tblTask.Item, tblTask.ItemDescription, tblTask.StartDate, tblTask.EndDate, tblTask.WeekendWork, tblEstimator.EstimatorNum & "-" & [FirstName] & " " & [LastName] & "\20" & Mid([tblJob].JobNum,3,2) & " JOBS\" AS JobMidFilePath
FROM (tblEstimator RIGHT JOIN tblJob ON tblEstimator.ID = tblJob.EstimatorID) RIGHT JOIN (tblDivision RIGHT JOIN tblTask ON tblDivision.ID = tblTask.DivisionID) ON tblJob.JobNum = tblTask.JobNum
WHERE (((tblJob.Closed)=False))
ORDER BY tblTask.JobNum, tblTask.Sequence, tblTask.StartDate, tblDivision.SortID;

目前,此查询返回 521 条记录。

预计我的表单不能处理所有这些吗?或者有没有办法提高我的表格效率?我非常不知道该怎么做,因为我需要加载所有 42 个子表单。

如果您需要更多信息,请告诉我。提前致谢!

【问题讨论】:

  • 您连接到多少个后端数据库?只有一个,还是很多?如果您自己运行问题“月视图”选项卡,它是否总是有效?
  • 只有一个后端数据库。拆分数据库后,月视图选项卡从未完全正常工作,即使我删除了其他选项卡。现在它加载了 29 个子表单,然后我得到一个弹出窗口,说我不能再打开任何数据库了。
  • 这 42 个子表单是否都是读/写的,还是其中一些(或大部分)是只读的?
  • 所有 42 个子表单(从相同的 1 个表单中提取)已将允许添加、删除和编辑设置为“否”,以使其只读。有没有更好的方法让它只读?

标签: vba ms-access


【解决方案1】:

所以,好消息是您的问题月视图选项卡都是只读的。这将使我的建议更容易实施:

  1. 尝试在每个子表单的表单属性中将 RecordsetType 设置为“快照”。这是最简单的。如果这不起作用,请尝试:

  2. 使用 ADO 断开连接的记录集。看看这个参考:

How To Create ADO Disconnected Recordsets in VBA/C++/Java

基本上,您创建这个断开连接的记录集,并将子表单的 .RecordSet 属性设置为它:

Set mySubForm.Recordset = myDisconnectedRsObject

由于这些根据定义不维护与后端的连接,因此您应该能够在不增加数据库数量的情况下创建任意数量的数据库。

一旦您使第一个工作正常,您将需要将 42 个子表单下的所有 Access/Jet 查询转换为断开连接的记录集。

【讨论】:

  • 我一定会尝试一下并回复您。谢谢!
  • @Mike - 查看我的编辑,先尝试更简单的方法。
猜你喜欢
  • 1970-01-01
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 2019-12-31
  • 1970-01-01
相关资源
最近更新 更多