Uso le seguenti procedure all'interno di alcune procedure excel per stabilire una connessione al nostro database.Verificare se la connessione ADODB è aperta
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
Nel codice successivo apro la connessione utilizzando varie stringhe SQL.
Mi piacerebbe testare se rs
è aperto, quindi so che deve essere chiuso, ma quanto segue non funziona. Come posso cambiare la condizione di seguito per lavorare?
If (rs.Open = True) Then
rs.Close
End If
le seguenti opere, ma io non preferisco usare l'intercettazione degli errori in questo modo:
On Error Resume Next
rs.Close
ok - solo indovinando ma c'è un errore di battitura nella risposta? ... fammi provare a modificare ... dovrebbe leggere 'If (rs.State And rs.adStateOpen) = rs.adStateOpen Then': anche se continuo a non capire questa affermazione condizionale. A cosa valuterà se rs è aperto? 'Se (1 E?) =? Quindi ' – whytheq
E 'operativo bit per' '. Il bit che è 'adStateOpen' rimarrà impostato solo se quel bit in' .State' è impostato e tutti gli altri bit sono azzerati. Il risultato del confronto del valore dell'operazione 'And' in' adStateOpen' darà come risultato 'True' solo se il bit-bit è stato impostato in' .State'. – Raybarg
Heh, probabilmente la tua confusione era a posto. Non volevo usare 'rs.adStateOpen' ma' adStateOpen'. – Raybarg