我有一個MSACCESS .mdb文件備份與SQL Server。 當我試圖打開一個窗體,它需要很長時間來顯示 我知道我有東西在窗體的加載事件。探查器中進行MSACCESS
有什麼辦法來跟蹤執行時間MSACCESS像SQL事件探查器?
我有一個MSACCESS .mdb文件備份與SQL Server。 當我試圖打開一個窗體,它需要很長時間來顯示 我知道我有東西在窗體的加載事件。探查器中進行MSACCESS
有什麼辦法來跟蹤執行時間MSACCESS像SQL事件探查器?
我真的不知道你是什麼意思「我知道我對形式的負載情況下的東西」。你不能檢查附加到你的表單的宏/ VBA嗎?你在做什麼事情?
檢查此鏈接了: http://bytes.com/topic/access/answers/204374-timer-function-determining-code-execution-speed
Dim sngStart As Single
Dim sngEnd As Single
Dim sngElapsed As Single
Dim time As Single
sngStart = Timer ' Get start time
'your code here
sngEnd = Timer 'get stop time
sngElapsed = sngEnd - sngStart
time = Format(sngElapsed, "######0.0000000000")
MsgBox "Time elapsed: " & time, vbInformation, "Time Elapsed"
Faheem; 我從來沒有見過這樣的跟蹤軟件。
一個簡單的,「老同學」的方法: 發生在每個函數調用結束一個MsgBox。 一旦你隔離了哪個函數的運行時間超過了預期,請檢查該函數。您的記錄集是否使用索引字段?避免同時打開多個記錄集。你是否最小化循環的使用?你的循環是否優化?
另一件事是檢查使用Access宏來計算聚集(求和,平均值)。 這會導致Access重複運行各個查詢。如果您遇到了處理超過100,000條記錄和二十列的情況,Access宏將會觸發二十次(每列一次)。
使用上面概述我已經採取了相當規模的DB倉庫應用口(.25萬條記錄在主數據表,40列)和精簡報告採取一個小時下來處理,以5秒的方法。客戶非常高興。
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
另外,檢查你的表單設計。是否有很多子表單/主/子鏈接?那裏有多少聚合?等等
感謝您的鏈接和代碼。這很好。事實上,我需要一個**軟件**,它將在MSAccess中運行時跟蹤每個語句/查詢/命令。在sql server中,我們可以查看Sql Profiler中的每個細節。它從頭到尾顯示了完整的細節。 – 2013-03-13 17:34:51
由於您已連接到SQL Server,因此請運行分析器,它將向SQL Server顯示每個查詢/答覆。 – david 2014-02-07 08:17:59