我有一个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