代码之家  ›  专栏  ›  技术社区  ›  Icode4food

me.visible=false而不是结束形式

  •  3
  • Icode4food  · 技术社区  · 15 年前

    在我的MS-Access应用程序中,我有几个非常数据密集型的表单(几个基于更多表的子表单)。我的用户抱怨说,当通过网络打开数据时,加载时间太长了。

    我对这个问题提出的一个解决办法是 docmd.close 当用户单击“保存并关闭”按钮时 me.visible = false . 然后,用户在应用程序加载后的第一次有很长的等待时间,但是对于以后的加载,性能有了显著的提高。

    我的用户并不太聪明,我也不自己使用这个应用程序,所以如果有什么异常行为,我就不能指望得到有意义的反馈。

    4 回复  |  直到 15 年前
        1
  •  4
  •   HansUp    15 年前

    还有谁成功地运用了这个策略,或者知道不这么做的理由吗?

    是的,这个策略类似于配方8.1 加快模板加载时间 访问食谱 . 但是,配方在数据库启动时预加载一组窗体,其中WindowMode:=acHidden。因此,折衷的办法是数据库启动需要更长的时间,但是后续的表单打开(对于预加载的表单)比较快。

    除此之外,我将仔细查看表单从后端数据库中提取的数据量。限制作为主窗体和子窗体的记录源检索的行数。为用户提供一种选择不同记录或小记录集的方法。还要确保使用索引来支持记录源和顺序子句。避免使用函数的WHERE条件,该函数将强制执行完整表扫描,以确定要从记录源中排除哪些行。类似的注意事项也适用于组合框和列表框,它们使用保存的查询或选择语句作为记录源;如果不能限制行,请至少确保优化数据检索。

        2
  •  4
  •   iDevlop    15 年前


    我想再深入了解一下为什么你的装货时间这么长。你提到了几个子窗体。它们是同时显示,还是显示在选项卡控件的各个页面中?

    编辑:
    另外,这个问题有点超出范围,但对每个性能问题都有好处:
    -是否重新检查了相关表中的外键是否已正确索引?

        3
  •  1
  •   Lance Roberts    15 年前

    您是否确保在适当的时间段内刷新数据?

        4
  •  1
  •   Tony Toews    15 年前

    是的,我自己在非常复杂的表单中也做过同样的事情,每个表单有10到15个选项卡,每个选项卡有一个子表单。至少工作了十年。您必须注意各种形式级别的值或未绑定的控件,这些值或控件假定以空或零开头。但一旦它运行平稳,它应该运行良好。我们不得不在Access 97天内返回,因为在用户每天打开和关闭各种表单数千次之后,Access会因内存不足而崩溃。

    推荐文章