【发布时间】:2016-02-11 10:24:33
【问题描述】:
我有一个 activeX 树视图控件,它有 4 级节点(子节点),每个节点都与存储在数据库后端(内部服务器)上的单独表相关。使此树视图工作需要 3 个查询和 4 个 dlookup。
随着数据库开始变得高度填充,带有树视图控件的表单加载速度变慢(10 秒)。我想加快这个加载时间,我认为转换为 ADO 是我至少需要考虑的事情。
这是唯一真正加载如此大量数据的表单,如它的 4 个表,我想我可能需要将查询记录集转换为 ADO?
我不太了解 ADO 或它最适合的应用,但由于我使用的是 activeX 控件,它可能最适合吗?我只在此表单上使用了DAO.recordset,因为可用的各种参考 VBA 都使用它。
ADO 是否更适合这种情况?
使用 ADO 会加快表单的加载时间吗?
将 VBA 中使用的记录集转换为 ADO 是否复杂?
注意:我不完全确定如何将我的 VBA 代码转换为 ADO 记录集,但如果它不合适,我不会费心去学习它
【问题讨论】:
-
我们在谈论多少数据?您是否确认延迟是由于渲染而不是查询时间?树视图的好处是您可以选择仅在节点展开时按需加载数据。
-
1 级:24 条记录.... L2:10.... L3:260 ...... L4:900。随着时间的推移,底层会变得相当大。如何“仅在单击时加载”或查看是否已应用?
-
转换为 ADO 不会给您带来显着的性能优势(甚至可能相反)。作为 ActiveX 对象的 Treeview 控件与加载记录的方式无关。
-
@Andre 我会先研究和尝试,看看我自己能走多远。
-
我完全同意@Andre ADO 或 DAO 不是问题所在。首先尝试使用内部表,然后查看加载树所需的时间。加载树时,您可以加载级别 1 到 3 中的所有节点,然后在 node_click() 事件中使用加载级别 4 节点时使用的相同代码添加或刷新级别 4 子节点。
标签: ms-access vba treeview ms-access-2010