Tôi sử dụng các thao tác sau từ trong một số quy trình excel để thiết lập kết nối với cơ sở dữ liệu của chúng tôi.Kiểm tra xem kết nối ADODB có đang mở không
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
Trong mã tiếp theo, tôi mở kết nối bằng nhiều chuỗi SQL khác nhau.
Tôi muốn thử nghiệm nếu rs
mở để tôi biết rằng nó cần phải đóng nhưng những điều sau không hoạt động. Làm thế nào tôi có thể thay đổi điều kiện trong những điều sau đây để làm việc?
If (rs.Open = True) Then
rs.Close
End If
Các công trình sau đây nhưng tôi không muốn sử dụng lỗi bẫy theo cách này:
On Error Resume Next
rs.Close
ok - chỉ cần đoán nhưng có lỗi chính tả trong câu trả lời không? ... hãy để tôi cố gắng chỉnh sửa ... nó nên đọc 'Nếu (rs.State Và rs.adStateOpen) = rs.adStateOpen Sau đó': mặc dù tôi vẫn không hiểu điều này tuyên bố có điều kiện. Nó sẽ được đánh giá như thế nào nếu rs được mở? 'Nếu (1 Và?) =? Sau đó, – whytheq
Đó là thao tác bit và ''. Bit đó là 'adStateOpen' sẽ chỉ được thiết lập nếu bit đó trong' .State' được thiết lập và tất cả các bit khác đều bằng không. Kết quả so sánh giá trị hoạt động 'và' với' adStateOpen' sẽ chỉ kết quả 'True' nếu cờ bit đó được đặt trong' .State'. – Raybarg
Heh, sự nhầm lẫn của bạn có lẽ đã xảy ra. Tôi không có ý định sử dụng 'rs.adStateOpen' nhưng' adStateOpen'. – Raybarg