2013-03-09 179 views
1

我有一個MSACCESS .mdb文件備份與SQL Server。 當我試圖打開一個窗體,它需要很長時間來顯示 我知道我有東西在窗體的加載事件。探查器中進行MSACCESS

有什麼辦法來跟蹤執行時間MSACCESS像SQL事件探查器?

回答

0

我真的不知道你是什麼意思「我知道我對形式的負載情況下的東西」。你不能檢查附加到你的表單的宏/ 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" 
+0

感謝您的鏈接和代碼。這很好。事實上,我需要一個**軟件**,它將在MSAccess中運行時跟蹤每個語句/查詢/命令。在sql server中,我們可以查看Sql Profiler中的每個細節。它從頭到尾顯示了完整的細節。 – 2013-03-13 17:34:51

+0

由於您已連接到SQL Server,因此請運行分析器,它將向SQL Server顯示每個查詢/答覆。 – david 2014-02-07 08:17:59

2

Faheem; 我從來沒有見過這樣的跟蹤軟件。

一個簡單的,「老同學」的方法: 發生在每個函數調用結束一個MsgBox。 一旦你隔離了哪個函數的運行時間超過了預期,請檢查該函數。您的記錄集是否使用索引字段?避免同時打開多個記錄集。你是否最小化循環的使用?你的循環是否優化?

另一件事是檢查使用Access宏來計算聚集(求和,平均值)。 這會導致Access重複運行各個查詢。如果您遇到了處理超過100,000條記錄和二十列的情況,Access宏將會觸發二十次(每列一次)。

使用上面概述我已經採取了相當規模的DB倉庫應用口(.25萬條記錄在主數據表,40列)和精簡報告採取一個小時下來處理,以5秒的方法。客戶非常高興。

0
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 

See Here

另外,檢查你的表單設計。是否有很多子表單/主/子鏈接?那裏有多少聚合?等等