在 Microsoft Access 中测量查询处理时间
Posted
技术标签:
【中文标题】在 Microsoft Access 中测量查询处理时间【英文标题】:Measuring query processing time in Microsoft Access 【发布时间】:2011-12-25 22:50:20 【问题描述】:我得到了这段代码,用于测量 Access 数据库中查询的时间。每次我尝试运行它时,都会出现语法错误,并突出显示 MyTest()
行。
Option Compare Database
Option Explicit
Private Declare Function timeGetTime _
Lib "winmm.dll" () As Long
Private mlngStartTime As Long
Private Function ElapsedTime() As Long
ElapsedTime = timeGetTime() - mlngStartTime
End Function
Private Sub StartTime()
mlngStartTime = timeGetTime()
End Sub
Public Function MyTest()
Call StartTime
DoCmd.OpenQuery "Query1"
DoCmd.GoToRecord acDataQuery, "Query1", acLast
Debug.Print ElapsedTime() & _
Call StartTime
DoCmd.OpenQuery "Query2"
DoCmd.GoToRecord acDataQuery, "Query2", acLast
Debug.Print ElapsedTime() & _
End Function
【问题讨论】:
【参考方案1】:这是另一种选择(旧的 VB6/VBA - 不是 VB.Net 语法)。
关键建议:“_”字符是“续行”。老实说,我认为您不希望在您使用它们的大多数地方使用它们。
恕我直言...
Option Explicit
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Private startTime, endTime As Long
Private Function elapsedTime(t1, t2 As Long) As Long
elapsedTime = t2 - t1
End Function
Public Function MyTest()
startTime = Now
' << do stuff >>
endTime = Now
MsgBox "Elapsed time=" & elapsedTime(startTime, endTime)
End Function
Private Sub Command1_Click()
Call MyTest
End Sub
已编辑。
【讨论】:
+1 API 调用和单独的经过时间函数不是必需的,但我喜欢这种方法。【参考方案2】:在这两行
Debug.Print ElapsedTime() & _
您在行尾使用字符串连接字符&
和行继续字符_
,即使该语句不会在下一行继续。所以,要么
继续下一行的语句,例如
Debug.Print ElapsedTime() & _
" milliseconds" ' or whatever unit is returned by your ElapsedTime call
或
删除不需要的代码:
Debug.Print ElapsedTime()
PS:欢迎来到 ***。请获取一本关于 VBA 开发的好书并阅读它。可以在这里问基本问题,但是“请修复我找到的这段代码,因为我不了解该语言的基础知识,也没有时间学习它”类型的问题是皱眉并可能被关闭。
【讨论】:
请在您的系统上尝试一下,因为我是 VBA 新手 @EmmanuelAsogwa:不,抱歉。 SO 上的人很乐意帮助您解决具体问题并分享知识,但我们不会为您完成工作并为您调试代码。如果您需要,请考虑付费 IT 咨询服务。以上是关于在 Microsoft Access 中测量查询处理时间的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft Access 2007 - 查看报表中使用的查询?
在 Microsoft Access 中编写查询,字段描述错误 [关闭]