如果您的目标仅仅是检查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”键,这样他就不必费心回答那些烦人的“你确定吗?”(是/否)“提示。) –