2015-01-09 117 views
1

我有一個excel宏。宏連接到Oracle以獲取數據。 此提取可能會或可能不會打開多個連接(取決於用戶如何在宏內編碼)。是否可以知道在Excel VBA中打開了多少個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

+0

「在VBA腳本中從該excel宏打開了多少個連接」 - 爲什麼這很重要? –

+1

它在ActiveWorkbook.Connections對象中嗎? –

+0

這取決於很多因素,例如:如何連接到Oracle數據庫?我們需要看你的代碼... –

回答

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 
    

你是你自己去弄清楚要如何實際跟蹤項目中的所有的連接。

+1

非常感謝您的建議。真的幫了! –

相關問題