VBA ADODB连接关闭时间过长-Excel 2010
我正在使用ADODB连接从Access 2013数据库获取数据并在Excel中显示。我使用Excel 2013在VBA中成功开发了一个高效的项目(时间方面) 然而,当我试图在Excel2010中执行我的excel应用程序时,某些操作的性能明显下降 我设法发现,Excel2010中性能不足的原因是Excel2010从内存中释放数据库连接所需的时间 下面,我提供了两个在Excel 2010中运行缓慢但在Excel 2013中运行缓慢的代码示例 我将变量设置为Nothing,只是为了确认释放这些变量花费的时间太长。如果我不将它们设置为Nothing,问题仍然存在,因为当这些变量超出范围时,它们会自动释放(End Sub花费的时间太长) 我甚至尝试更改代码以首先启动连接:VBA ADODB连接关闭时间过长-Excel 2010,vba,excel,adodb,ms-access-2013,Vba,Excel,Adodb,Ms Access 2013,我正在使用ADODB连接从Access 2013数据库获取数据并在Excel中显示。我使用Excel 2013在VBA中成功开发了一个高效的项目(时间方面) 然而,当我试图在Excel2010中执行我的excel应用程序时,某些操作的性能明显下降 我设法发现,Excel2010中性能不足的原因是Excel2010从内存中释放数据库连接所需的时间 下面,我提供了两个在Excel 2010中运行缓慢但在Excel 2013中运行缓慢的代码示例 我将变量设置为Nothing,只是为了确认释放这些变量花
Sub test2()
Dim rs As ADODB.Recordset
Dim conn As ADODB.Connection
Dim strSQL As String
Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\mydatabase.accdb"
strSQL = "SELECT * FROM Category"
Set rs = New ADODB.Recordset
rs.Open strSQL, conn
rs.Close
Set rs = Nothing
conn.Close ' Takes too long in Excel 2010, but runs instantinaly in Excel 2013.
Set conn = Nothing
End Sub
更新:
我发现,事实上,关闭连接的时间太长了
Sub test1()
Dim rs As ADODB.Recordset
Dim strSQL As String
strSQL = "SELECT * FROM Category"
Set rs = New ADODB.Recordset
rs.Open strSQL, "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\mydatabase.accdb"
rs.Close
Set rs = Nothing ' Takes too long in Excel 2010, but runs instantinaly in Excel 2013.
End Sub
例如:
Sub test3()
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\mydatabase.accdb"
conn.Close ' Takes too long in Excel 2010, but runs instantinaly in Excel 2013.
Set conn = Nothing
End Sub
有什么想法吗
更新2:
我发现,如果我将连接保持打开状态至少15秒左右,关闭连接将不需要时间
因此,我刚刚将我的项目更改为始终具有与数据库的打开连接。只有退出Excel时,连接才会关闭