适用于:Access 2013、Office 2013
将 ActiveConnection 属性设置为 Nothing 会"关闭"目录。 关联的集合将为空。 利用该目录中的架构对象创建的任何对象都将孤立。 已被缓存的那些对象的属性仍然可用,但是试图读取需要调用提供程序的属性时会失败。
' BeginCloseConnectionVB
Sub Main()
On Error GoTo CloseConnectionByNothingError
Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
cnn.Open "Provider='Microsoft.Jet.OLEDB.4.0';" & _
"Data Source= 'c:\Program Files\Microsoft Office\" & _
"Office\Samples\Northwind.mdb';"
Set cat.ActiveConnection = cnn
Set tbl = cat.Tables(0)
Debug.Print tbl.Type ' Cache tbl.Type info
Set cat.ActiveConnection = Nothing
Debug.Print tbl.Type ' tbl is orphaned
' Previous line will succeed if this was cached
Debug.Print tbl.Columns(0).DefinedSize
' Previous line will fail if this info has not been cached
'Clean up
cnn.Close
Set cat = Nothing
Set cnn = Nothing
Exit Sub
CloseConnectionByNothingError:
Set cat = Nothing
If Not cnn Is Nothing Then
If cnn.State = adStateOpen Then cnn.Close
End If
Set cnn = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
End Sub
' EndCloseConnectionVB
关闭用于"打开"目录的 Connection 对象应与将 ActiveConnection 属性设置为 Nothing 效果相同。
Sub CloseConnection()
On Error GoTo CloseConnectionError
Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
cnn.Open "Provider='Microsoft.Jet.OLEDB.4.0';" & _
"Data Source= 'c:\Program Files\Microsoft Office\" & _
"Office\Samples\Northwind.mdb';"
Set cat.ActiveConnection = cnn
Set tbl = cat.Tables(0)
Debug.Print tbl.Type ' Cache tbl.Type info
cnn.Close
Debug.Print tbl.Type ' tbl is orphaned
' Previous line will succeed if this was cached
Debug.Print tbl.Columns(0).DefinedSize
' Previous line will fail if this info has not been cached
'Clean up
Set cat = Nothing
Set cnn = Nothing
Exit Sub
CloseConnectionError:
Set cat = Nothing
If Not cnn Is Nothing Then
If cnn.State = adStateOpen Then cnn.Close
End If
Set cnn = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
End Sub
' EndCloseConnection2VB