我在一些excel過程中使用以下內容來建立與我們數據庫的連接。檢查ADODB連接是否打開
Private Const strConn As String = _
"PROVIDER=SQLOLEDB.1 ..."
Sub OpenConnection()
Set cn = CreateObject("ADODB.Connection")
cn.Open strConn
cn.CommandTimeout = 0
Set rs = CreateObject("ADODB.Recordset")
Set rs.ActiveConnection = cn
End Sub
在隨後的代碼中,我使用各種SQL字符串打開連接。
我想測試如果rs
是開放的,所以我知道它需要關閉,但以下不起作用。我如何改變下面的條件來工作?
If (rs.Open = True) Then
rs.Close
End If
下面的作品,但我寧可不使用錯誤以這種方式俘獲:
On Error Resume Next
rs.Close
好吧 - 只是猜測,但是在答案中有錯字嗎? ...讓我試着編輯...它應該讀取'If(rs.State And rs.adStateOpen)= rs.adStateOpen Then':儘管我仍然不明白這個條件語句。如果rs是開放的,它將評估什麼? '如果(1和?)=?然後' – whytheq
它是按位運算。只有在'.State'中的那個位被設置並且所有其他位都被清零時,'adStateOpen'位纔會保持置位狀態。如果在「.State」中設置了該位標誌,則將'And'操作值與'adStateOpen'進行比較的結果只會導致爲'真'。 – Raybarg
嘿,你的困惑很可能已經到位了。我不是故意使用'rs.adStateOpen',而是'adStateOpen'。 – Raybarg