测量Microsoft Access中的查询处理时间

时间:2011-12-25 22:50:21

标签: ms-access vba ms-access-2010

我得到了用于测量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

2 个答案:

答案 0 :(得分:2)

这是另一种选择(旧的VB6 / VBA - 而不是VB.Net语法)。

关键建议:“_”字符是“延续线”。老实说,我不认为你在大多数你正在使用它们的地方都想要它们。

... IMHO

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 :(得分:1)

在两行中

Debug.Print ElapsedTime() & _

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

  1. 继续下一行的陈述,例如

    Debug.Print ElapsedTime() & _
        " milliseconds"  ' or whatever unit is returned by your ElapsedTime call
    

  2. 删除不需要的代码:

    Debug.Print ElapsedTime()
    
  3. PS:欢迎使用StackOverflow。请获得一本关于VBA开发的好书并阅读它。可以在这里提出基本问题,但“请修复我找到的代码,因为我不知道该语言的基础知识并且没有时间学习它”问题的类型是不满意,可能会被关闭。