我的任务是修复 Microsoft Access 表单上的性能问题。该页面有一个使用查询的数据源。Query 连接几个表并进行求和。问题是当页面加载时,表单使用 QueryColumn = 'ImplossibleValue' 之类的虚拟值来显示 empty.list。该表单包含搜索条件过滤器和搜索按钮。单击搜索按钮时,设置了正确的过滤器。
因为查询处理大量数据,所以页面一开始加载很慢,但是当表单打开时,用户会看到空白查询作为设计。有没有办法打开表单并使其没有数据源?
我的任务是修复 Microsoft Access 表单上的性能问题。该页面有一个使用查询的数据源。Query 连接几个表并进行求和。问题是当页面加载时,表单使用 QueryColumn = 'ImplossibleValue' 之类的虚拟值来显示 empty.list。该表单包含搜索条件过滤器和搜索按钮。单击搜索按钮时,设置了正确的过滤器。
因为查询处理大量数据,所以页面一开始加载很慢,但是当表单打开时,用户会看到空白查询作为设计。有没有办法打开表单并使其没有数据源?
您可以将记录源更改为返回 Null 值且无需引用任何表的查询。
SELECT Null AS field1, Null AS field2;
在用户选择她的搜索条件后,将记录源更改为包含这些条件的查询。更改记录源会自动触发重新查询。
如果用户在将记录源更改为搜索查询后保存表单设计,则表单将在下次打开时再次使用该设计。您可以通过在表单打开事件期间重置该属性来强制表单始终以虚拟行查询作为其记录源打开。
Me.RecordSource = "SELECT Null AS field1, Null AS field2;"
打开表单时,请在 docmd.openform 语句中使用 where 条件。其中 primarykey = null 将没有记录,您不需要取消绑定整个表单。
10 年前,我在使用 Jet 时遇到过类似的性能问题,而我发现的唯一解决方案是迁移到 Access Data Projects。
使用 SQL Server 升级到客户端-服务器应用程序,运行几个查询向导来确定正确的索引,您将立即获得出色的性能。