Currentproject.connection在没有链接表的情况下有效吗?

时间:2018-12-17 04:30:04

标签: sql-server vba ms-access

我有一个链接表连接到SQL Server后端。我进入了Access中的链接表选项,并删除了连接,这意味着不再有链接表。但是,当我进入调试控制台并键入?currentproject.Connection时,将得到与拥有链接表时相同的连接字符串。连接字符串如下所示:

 Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\Dave\Desktop\COMP\COMPMAIN.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database=C:\Users\Dave\AppData\Roaming\Microsoft\Access\System3.mdw;Jet OLEDB:Registry Path=Software\Microsoft\Office\16.0\Access\Access Connectivity Engine;Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=True;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Bypass ChoiceField Validation=False

但是,即使当我删除链接表时连接字符串完全相同,像这样的简单代码

Function connection()
Dim rst As New ADODB.Recordset
Dim i As Integer
rst.Open "select * from Customers", CurrentProject.connection
Do While Not rst.EOF
i = i + 1
rst.MoveNext
Loop
Debug.Print i

End Function

链接表时曾经返回124

给我以下错误

  

Microsoft Access数据库引擎找不到输入表或查询

我很困惑,因为该错误不是说连接无效,而是说找不到表

1 个答案:

答案 0 :(得分:1)

currentproject.Connection中的

.mdb指向此.mdb本身。不要链接表! 当您在.mdb中具有链接表时,您的代码将建立与此.mdb的连接,并从放置在该表中的链接表引用中提取数据。当您从.mdb删除链接表时,您的代码会建立与.mdb的连接,但找不到表(因为已将其删除)。

链接表的连接字符串存储在.Connect属性中:

CurrentDB.TableDefs("Customers").Connect