如果您的目標僅僅是檢查db文件是否包含特定的鏈接表,則可以使用ADO OpenSchema
方法。使用這種方法,您不需要在Access應用程序會話中打開數據庫文件,因此AutoExec宏不會運行。
以下是使用後期綁定的示例。如果你更喜歡早期的綁定,我留下了評論筆記。更改提供商如果你的Access版本早於2007年
由於您使用Access用戶級安全性,還必須適應連接字符串包含路徑到您的MDW並提供安全的訪問用戶名和密碼。以下是來自ConnectionStrings.com的示例連接字符串(使用Jet 4提供程序)。我分裂的分號的可讀性單行字符串:
Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\mydatabase.mdb;
Jet OLEDB:System Database=system.mdw;
User ID=myUsername;
Password=myPassword;
Public Function HasLinkedTable(ByVal pDb As String, _
ByVal pTable As String) As Boolean
Const adSchemaTables = 20&
Dim cn As Object ' ADODB.Connection
Dim rs As Object ' ADODB.Recordset
Dim strConnect As String
Dim blnReturn As Boolean
strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & pDb & ";"
'Set cn = New ADODB.Connection
Set cn = CreateObject("ADODB.Connection")
cn.Open strConnect
Set rs = cn.OpenSchema(adSchemaTables)
With rs
Do While Not .EOF
If !TABLE_NAME = pTable And !TABLE_TYPE = "LINK" Then
'Debug.Print !TABLE_NAME, !TABLE_TYPE
blnReturn = True
Exit Do
End If
.MoveNext
Loop
.Close
End With
cn.Close
Set cn = Nothing
HasLinkedTable = blnReturn
End Function
哪裏的用戶名和密碼?我沒有在代碼清單中看到它...... – leeand00
+ +1爲一個更加優雅的方法,然後我正要建議。 (這是荷馬辛普森在[在家工作]時使用的一個變體(http://en.wikipedia.org/wiki/King-Size_Homer),並且對他來說變得不那麼好)。 –
(荷馬用一隻[飲鳥](http://en.wikipedia.org/wiki/Drinking_bird)爲他打出「Y」鍵,這樣他就不必費心回答那些煩人的「你確定嗎?」(是/否)「提示。) –