Code Snippet "VBA Access"
Geschwindigkeit von Abfragen (Queries) messen
'Misst die Performance-Zeit in Sekunden (auch Bruchteile)
'muss initialisiert werden
'wenn blnRunden = true, dann wird auf bytAnzStellen gerundet,
'sonst keine Rundung
'Defaultwerte:
' - blnRunden: false
' - bytAnzStellen: 0
Function funAnzVergangeneSekunden(Optional ByVal blnRunden As Boolean, _
Optional ByVal bytAnzStellen As Byte)
Static sngVorher As Single
Dim sngAktuell As Single
Dim sngDifferenz As Single
sngAktuell = Timer
If sngVorher > 0 Then
sngDifferenz = sngAktuell - sngVorher
Else
sngDifferenz = 0
End If
sngVorher = sngAktuell
If blnRunden Then
funAnzVergangeneSekunden = Round(sngDifferenz, bytAnzStellen)
Else
funAnzVergangeneSekunden = sngDifferenz
End If
End Function
Sub testQueryPerformance()
Const strQuery As String = "qry_codeexamples"
Dim arrAnz(3) As Single
Dim intCounter As Integer
Dim sngSumme As Single
Dim sngMittelwert As Single
'Call procZeitMessung("vor Query " & strQuery)
For intCounter = 0 To UBound(arrAnz) - 1
funAnzVergangeneSekunden
Call DoCmd.OpenQuery(strQuery, acViewNormal, acReadOnly)
arrAnz(intCounter) = funAnzVergangeneSekunden
Debug.Print intCounter & " " & arrAnz(intCounter)
sngSumme = sngSumme + arrAnz(intCounter)
Call DoCmd.Close(acQuery, strQuery)
Next
sngMittelwert = Round(sngSumme / (UBound(arrAnz)), 3)
Debug.Print "Ausführungszeit für " & strQuery & " " & sngMittelwert
End Sub