2016-07-23 109 views
1

我試圖讓錶鏈接到後端在啓動Access 2010中,動態鏈接

下面是代碼:

dbs.TableDefs(intLoop - 1).Connect = ";DATABASE=" & strBack & strBackEnd 
Debug.Print (dbs.TableDefs(intLoop - 1).Connect) 
dbs.TableDefs(intLoop - 1).RefreshLink 

現在的連接是一個文件上C:或D:驅動器取決於PC設置。但不是連接到文件,而是打開系統DNS選擇器窗口。

任何線索爲什麼?路徑有效,數據庫有效。

+0

'strBack&strBackEnd'輸出是什麼?它們分別是具有正斜槓Windows分隔符和擴展名的目錄和基本名稱嗎? – Parfait

+0

是的,該字符串是有效的mdb文件的有效路徑。它是RefreshLink打開dsn窗口 – Rob

+0

DSN設置啓動的唯一原因是使用了ODBC鏈接表(非Access源)。 – Parfait

回答

0

在評論你解釋:

數據庫具有本地表,連接到MDB文件的混合和鏈接 到SQLServer的。

可以處理該組合通過檢查每個TableDef.Connect財產,只有改變那些鏈接到另一個Access數據庫。

Dim dbs As DAO.Database 
Dim tdf As DAO.TableDef 

Set dbs = CurrentDb 
For Each tdf In dbs.TableDefs 
    With tdf 
     If .Connect Like ";DATABASE=*" Then 
      .Connect = ";DATABASE=" & strBack & strBackEnd 
      .RefreshLink 
     End If 
    End With 
Next 

該建議假設鏈接已經存在,而您只是試圖改變它們的連接屬性。如果您需要從頭開始創建鏈接,請使用包含每個鏈接表信息的本地表格,然後使用該信息驅動鏈接創建。

+0

謝謝,一旦我釋放我的錯誤,我有這種排序,但我會將其標記爲可能在同一條路上漫步的其他人的答案, – Rob