Измерение времени обработки запроса в Microsoft Access - PullRequest
0 голосов
/ 26 декабря 2011

Я получил этот код для измерения времени запроса в базе данных 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 ]

2 голосов
/ 26 декабря 2011

Вот еще одна альтернатива (старый 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 голос
/ 26 декабря 2011

В две строки

Debug.Print ElapsedTime() & _

Вы используете символ конкатенации строк & и символ продолжения строки _ в конце строки, даже если оператор не продолжается на следующей строке. Итак, либо

  1. продолжить оператор на следующей строке, например,

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

    или

  2. Удалите ненужный код:

    Debug.Print ElapsedTime()
    

PS: Добро пожаловать в StackOverflow. Пожалуйста, получите хорошую книгу по разработке VBA и прочитайте ее. Здесь можно задавать основные вопросы, но «, пожалуйста, исправьте этот код, который я нашел, потому что я не знаю основ языка и не имею времени изучать его» и может быть закрыт.

...