我想测量运行和显示查询所需的时间.似乎有三种不同的时间长度:
A.从VBA打开查询到控件返回到下一个VBA行之间的时间.这可以通过以下方式来衡量:
dTime = Evaluate("Now()")
DoCmd.OpenQuery (sQueryName)
MsgBox (((Evaluate("Now()") - dTime) * 86400) & " seconds")
但这并不是计算数据表所需的全部时间.在出现上述代码中的消息框后,对于大型查询,数据表窗口可能仍然大部分是空的,等待其内容被绘制.
B.从打开查询到完全绘制数据表之间的时间.
即使这似乎不是完成查询工作的全部时间,因为对于大型查询,当数据表完全绘制时,它仍然不会响应鼠标单击以 Select 它.
C.打开查询及其数据表与鼠标单击以 Select 它的响应之间的时间.
在我目前处理的一个有300,000行的查询中,时间大约是:
- A.0.1秒
- B.9秒
- C.17秒
时间A
与消息框中报告的时间相同,因此也是准确的.但B
和C
是由我观察数据表窗口的行为手动计算的.我不知道是否有一种方法可以通过编程来检测B
和C
的完成情况,这样我就可以准确地获得这些时间.
即使C
也不是计算查询的所有行的时间.在C
结束时,滚动数据表窗口可能需要另一段很长的时间才能重新绘制工作表.在我当前300,000行的查询上,这大约是另外9秒,之后数据表被完全重绘,并响应鼠标单击以 Select 它.我认为滚动的延迟意味着每次只计算数据表的可见部分.
我想测量查询代码更改的速度-效果,因此精确测量B
和/或C
会很有帮助.有什么办法可以做到这一点吗?