背景
我正在寻找一种方法来提高 Access 2007 表单的速度/性能。用户有两种不同的数据视图,每种视图都有不同的过滤和排序标准。我有一个复选框可以切换此选项,并有处理切换事件的代码:
Private Sub FilterOpenJobs_Click()
If (FilterOpenJobs.Value) Then
Me.Filter = "Status='Open'"
Me.OrderBy = "EndDate"
Me.FilterOn = True
Me.OrderByOn = True
Else
Me.Filter = ""
Me.OrderBy = "JOB_NO"
Me.FilterOn = False
Me.OrderByOn = False
End If
End Sub
我遇到的问题是表单记录源相当大,应用过滤器和排序需要一些时间。(另请注意,记录来自混合来源:一些 Access 表,一些 dBase 表。)它运行得足够慢,以至于我能够看到FilterOn
调用和OrderByOn
调用之间的中间结果。
问题
反正有没有同时应用过滤器和排序?是否有某种方法可以锁定表单以防止更新,以便两者都可以同时发生?我最好为表单RecordSource
属性分配一个新值吗?如果在行源 SQL 中完成过滤和排序,表单会运行得更快吗?