我最近拆分了数据库。我的表单是一个日历,其中包含Tab
分别具有42、7和7个子表单的月视图,周视图和日视图。所有这些子表单都是未绑定的。选择一个选项卡后,该选项卡中的ControlSource
所有子窗体都被分配了一段时间,而其他所有子窗体都被清除了ControlSource
。
Month View是Error 3048: Cannot open any more databases.
加载23个子表单之后唯一获得的视图(在外部有一些标签,列表和按钮Tab
,但我认为它们并不重要)。
选择“月视图”选项卡时,将发生以下操作:
Long
日期信息SourceObject
SourceObject
表单:为其分配其Filter
自身,然后调用一个函数(位于SUBform中)。在此函数中,将调用另一个函数以根据某些条件对子表单中的记录数进行计数。在这里创建数据库和记录集,并在记录集之前经过几次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个子窗体。
如果您需要更多信息,请与我们联系。提前致谢!
因此,好消息是您的问题月份视图选项卡都是只读的。这将使实施我的建议更加容易:
尝试在每个子窗体的“窗体属性”中将RecordsetType设置为“ Snapshot”。这是最简单的。如果那不起作用,请尝试:
使用ADO断开连接的记录集。看一下这个参考:
如何在VBA / C ++ / Java中创建ADO断开记录集
基本上,您可以创建此断开连接的记录集thing,并为其设置子窗体的.RecordSet属性:
Set mySubForm.Recordset = myDisconnectedRsObject
由于按照定义这些都不与后端保持连接,因此您应该能够创建任意数量的数据库而不会增加数据库数量。
一旦第一个工作正常,您将需要将基于42个子表单的所有Access / Jet查询转换为断开的记录集。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句