在 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() & _

您在行尾使用字符串连接字符&amp; 和行继续字符_,即使该语句不会在下一行继续。所以,要么

    继续下一行的语句,例如

    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 查询中格式化日期

Microsoft Access 2007 - 查看报表中使用的查询?

在 Microsoft Access 中编写查询,字段描述错误 [关闭]

Microsoft Access 无法在追加查询中追加所有记录

Microsoft Access 2010:查询和表单

使用 Microsoft Access 2010 在子查询中找不到表