我在一些Excel过程中使用以下代码来建立与我们数据库的连接。
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
And
操作。只有当.State
中的那个位被设置并且所有其他位都被清零时,才会保留adStateOpen
位。将And
操作值与adStateOpen
进行比较的结果只有在.State
中设置了该位标志时才会为True
。 - Raybargrs.adStateOpen
而是adStateOpen
。 - RaybargadStateOpen
会出现“变量未定义”的错误...这就是为什么我编辑并添加了rs.
的原因...尽管我认为rs
是错误的编辑 - 我已经重新编辑过了。 - whytheq.State
值将是1+4=5(二进制0101)
或1+8=9(二进制1001)
。如果您愿意,可以使用简单的If rs.State = 1
,但为什么不按正确的方式做呢?这将在所有情况下都起作用,避免未来难以找到的错误情况。 - RaybargADODB.Connection.State
也使用ObjectStateEnum
。 - Raybarg