【问题标题】:MS access Treeview Control slow to load, do I need to use ADO instead of DAO?MS访问Treeview控件加载缓慢,我需要使用ADO而不是DAO吗?
【发布时间】: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


【解决方案1】:

快速加载树视图的“技巧”是双重的

a) 您应该保存/计算“层数”(0 = 地面层, 1等),以便您在使用时可以方便地使用级别编号 加载,这样您就可以一步加载整个树,而无需 递归搜索。我个人总是有一个单独的本地 包含所有内容的树视图表,尤其是 等级号

b) 在加载到数组之前加载表信息并从 那里。最好的问候克劳斯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    相关资源
    最近更新 更多