【问题标题】:Other way to speed up Microsoft Access Form Load with Datasource使用数据源加速 Microsoft Access 表单加载的其他方法
【发布时间】:2011-12-12 09:40:12
【问题描述】:

我的任务是修复 Microsoft Access 表单上的性能问题。该页面有一个使用查询的数据源。 Query 连接几个表并进行求和。问题是当页面加载时,表单使用 QueryColumn = 'ImplossibleValue' 之类的虚拟值来显示 empty.list。该表单包含搜索条件过滤器和搜索按钮。当搜索按钮被点击时,正确的过滤器被设置。

由于查询处理大量数据,页面一开始加载速度很慢,但当表单打开时,用户会看到空白查询作为设计。有没有办法打开表单并使其没有数据源?

【问题讨论】:

  • 你在第一句话中回答了你自己的问题。
  • @HansPassant 实际上,即使我放置了一个不可能的值过滤器,它仍然会执行查询以获得零记录。我猜Access在做过滤器时没有优化,也许它加入了它,最后做过滤器。

标签: performance ms-access ms-access-2003 form-load


【解决方案1】:

您可以将记录源更改为返回 Null 值且无需引用任何表的查询。

SELECT Null AS field1, Null AS field2;

用户选择她的搜索条件后,将记录源更改为包含这些条件的查询。更改记录源会自动触发重新查询。

如果用户在将记录源更改为搜索查询后保存表单设计,则该表单将在下次打开时再次使用该设计。您可以通过在表单打开事件期间重置该属性来强制表单始终以虚拟行查询作为其记录源打开。

Me.RecordSource = "SELECT Null AS field1, Null AS field2;"

【讨论】:

    【解决方案2】:

    10 年前,我在使用 Jet 时遇到过类似的性能问题,我发现的唯一解决方案是迁移到 Access Data Projects。

    使用 SQL Server 升级为客户端-服务器应用程序,运行几个查询向导以确定正确的索引,您将立即获得出色的性能。

    【讨论】:

      【解决方案3】:

      当您打开表单时,请在 docmd.openform 语句中使用 where 条件。其中 primarykey = null 将没有记录,您不需要取消绑定整个表单。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-22
        • 1970-01-01
        • 1970-01-01
        • 2017-08-05
        相关资源
        最近更新 更多