vba - 获取错误 3048 : Cannot open any more databases

标签 vba ms-access

我最近拆分了我的数据库。我的表单是一个带有 Tab 的日历,用于月 View 、周 View 和日 View ,分别具有 42、7 和 7 个子表单。所有这些子表单都是未绑定(bind)的。选择一个选项卡后,该选项卡中的所有子窗体都被分配一个 ControlSource,而所有其他子窗体的 ControlSource 都被清除。

月 View 是唯一出现 错误 3048:无法打开更多数据库。 加载 23 个子表单后(Tab 外有一些标签、列表和按钮,但我认为它们并不重要)。

选择“月 View ”选项卡时,会发生以下操作:

  1. 一个 42x2 数组填充了 Long 日期信息
  2. 所有子表单都清除了它的 SourceObject
  3. 对于所选选项卡中的所有子表单:分配其SourceObject,然后调用一个函数(位于子表单中)来Filter 本身。在这个函数中,调用了另一个函数来根据某些条件统计子表单中的记录数。数据库和记录集在此处创建,并在记录集关闭之前通过几次。

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

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 个子表单。

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

最佳答案

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

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

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

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

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

Set mySubForm.Recordset = myDisconnectedRsObject

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

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

关于vba - 获取错误 3048 : Cannot open any more databases,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30519628/

相关文章:

vba - 字体颜色更改为白色而不是灰色

excel - VBA 无法转置数据(从一个工作簿复制到一本合上的书)

ms-access - Microsoft Access 为备注字段附加 Querydef

ms-access - 如何为保存的 Excel 导入指定不同的文件路径

ms-access - 如何以编程方式获取SSIS包中的MS Access表列表?

ms-access - VBA 文件的版本控制

VBA用循环合并单元格

excel - 如果#REF!找到错误框宏

sql - 自增复合主键

python - pyodbc.尝试打开jet数据库时出错