2013-03-09 76 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

另外,检查你的表单设计。是否有很多子表单/主/子链接?那里有多少聚合?等等