是否可以知道在 Excel VBA 中打开了多少个 Oracle 连接?
Is it possible to know how many Oracle connections are opened in Excel VBA?
我有一个 excel 宏。宏正在连接到 Oracle 以获取数据。
此获取可能会或可能不会打开多个连接(取决于用户在宏中的编码方式)。
是否可以知道在 excel vba 中打开的 Oracle 连接?或者
我重新表述我的问题:是否有可能知道从 VBA 脚本中的 Excel 宏打开了多少个连接?
连接代码:
Public Const CONNECT_STRING = "Provider=MSDAORA.1;Password=XXXX;User ID=XXXXX;Data Source=XXXXX;Persist Security Info=True"
Dim conn As ADODB.Connection
conn.Open CONNECT_STRING
MsgBox Application.ActiveWorkbook.Connections.Count
Count is still 0
答案是否定的……是的。
没有内置任何东西来跟踪您打开到特定数据库的 ADODB 连接数。如果需要,您必须自己跟踪。
您可以通过在创建连接时将每个连接添加到集合中,然后编写一个函数在返回计数之前检查两件事来实现这一点。
- 确保连接对象不是
Nothing
通过检查 connection's state property.
来确保连接在计数之前是打开的
Dim conn As ADODB.Connection
For Each conn in someCollection
If Not conn Is Nothing Then
If conn.State <> adStateClosed Then
count = count + 1
End If
End If
Next conn
您需要自己弄清楚您希望如何实际跟踪项目中的所有连接。
我有一个 excel 宏。宏正在连接到 Oracle 以获取数据。 此获取可能会或可能不会打开多个连接(取决于用户在宏中的编码方式)。
是否可以知道在 excel vba 中打开的 Oracle 连接?或者 我重新表述我的问题:是否有可能知道从 VBA 脚本中的 Excel 宏打开了多少个连接?
连接代码:
Public Const CONNECT_STRING = "Provider=MSDAORA.1;Password=XXXX;User ID=XXXXX;Data Source=XXXXX;Persist Security Info=True"
Dim conn As ADODB.Connection
conn.Open CONNECT_STRING
MsgBox Application.ActiveWorkbook.Connections.Count
Count is still 0
答案是否定的……是的。
没有内置任何东西来跟踪您打开到特定数据库的 ADODB 连接数。如果需要,您必须自己跟踪。
您可以通过在创建连接时将每个连接添加到集合中,然后编写一个函数在返回计数之前检查两件事来实现这一点。
- 确保连接对象不是
Nothing
通过检查 connection's state property.
来确保连接在计数之前是打开的Dim conn As ADODB.Connection For Each conn in someCollection If Not conn Is Nothing Then If conn.State <> adStateClosed Then count = count + 1 End If End If Next conn
您需要自己弄清楚您希望如何实际跟踪项目中的所有连接。