是否可以知道在Excel VBA中打开了多少个Oracle连接?

时间:2015-01-09 02:53:09

标签: excel vba excel-vba database-connection adodb

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

计数仍为0

1 个答案:

答案 0 :(得分:1)

答案是否定的......是的。

没有内置任何内容来跟踪您对特定数据库打开的ADODB连接数。如果需要,你必须自己跟踪这个。

您可以在创建集合时将每个连接添加到集合中,然后在返回计数之前编写一个函数来检查两件事。

  1. 确保连接对象不是Nothing
  2. 通过检查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
    
  3. 您可以自行了解如何实际跟踪项目中的所有连接。

相关问题