2011-12-25 40 views
-2

我得到这个代码用于测量查询的时间访问database.Please有人可以帮我调试它,因为每次我尝试运行它的时候,我得到的语法错误和MyTest()行被突出显示。请我需要这个紧急完成我的project.Thanks测量查询处理时间

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

这里的另一种替代方案(旧VB6/VBA - 不VB.Net语法)。

KEY建议: “_” 字符是 “连续行”。我真的不认为你需要他们在你使用他们的大部分地方。

恕我直言...

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 

编辑。

+0

+1 API调用和独立运行时间函数不是必需的,但我喜欢这种方法。 – 2011-12-26 11:43:08

+0

@ paulsm4.Thanks很多。 – 2011-12-26 20:28:17

1

在两行

Debug.Print ElapsedTime() & _ 

您正在使用的字符串连接字符&,并在末尾的续行符_该行,即使该声明不会继续在下一行。因此,要么是

  1. 继续下一行的语句,例如,

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

  2. 删除不需要的代码:

    Debug.Print ElapsedTime() 
    

PS:欢迎StackOverflow的。请获得关于VBA开发的好书并阅读它。这是确定在这里最基本的问题,而是“请解决这个问题的代码,我发现,因为我不知道语言的基础知识,不具备学习它时间”的问题类型是令人难以接受的,并有可能被关闭。

+0

请尝试乌尔系统上因为我是新来的VBA – 2011-12-25 23:00:25

+4

@EmmanuelAsogwa:不,对不起。 SO上的人很乐意帮助你解决具体问题并分享知识,但我们不会为你做你的工作和调试你的代码。如果你需要,考虑付费的IT咨询服务。 – Heinzi 2011-12-25 23:06:22