2013-03-18 135 views
8

我有一個Access 2010數據庫A.mdb與表的列表,其中之一是鏈接表,從另一個Access數據庫鏈接B.mdb上同一臺服務器這些數據庫位於開發機器xxx.xxx.xxx.xxx上,它在我的電腦上映射爲R://,之後它們在yyy.yyy.yyy.yyy服務器上在線發佈。更新的Access鏈接的表使用UNC路徑

如果我想在本地處理數據庫,我需要更改鏈接到表。但如果我通過文件系統(使用「鏈接表管理器」)更改鏈接,則鏈接將變爲R://....,當我查看請求這些數據的ASP頁面時,由於路徑錯誤而導致鏈接中斷。另外,如果我在本地更改鏈接,它將無法在聯機服務器上運行。

有沒有辦法改變「編程」的鏈接?也就是說,不使用鏈接表管理器?

我搜索了一個答案,但我不是那個專家,我只是明白我必須寫一個「模塊」? 「宏」?

回答

15

表格鏈接可以是UNC路徑。例如,假設我有一個鏈接表,指向\\192.168.1.2\Public\上的數據庫,該數據庫映射到驅動器P:。如果我啓動VBA編輯器(Alt鍵 + F11),打開立即窗口(按Ctrl +)和類型...

?CurrentDB.TableDefs("remoteTable").Connect

...它會返回。 ..

;DATABASE=P:\B.accdb

...因爲我指着開車P:當我創建的鏈接。

現在,如果我創建並運行VBA函數...

Function linkToUnc() 
Dim cdb As DAO.Database 
Set cdb = CurrentDb 
cdb.TableDefs("remoteTable").Connect = ";DATABASE=\\192.168.1.2\Public\B.accdb" 
cdb.TableDefs("remoteTable").RefreshLink 
Set cdb = Nothing 
End Function 

...該鏈接現在是一個UNC路徑。

順便說一句,如果你瀏覽到「網絡」,「機器名稱」,「共享名稱」,你可以在鏈接表管理器中創建UNC鏈接,但是會給你機器名稱(在我的情況下爲\\PICO\Public\B.accdb) 。

+0

非常感謝你!只有一個問題(新手在這裏):我如何創建VBA功能?宏?模塊?宏鏈接到模塊?噓!關於「瀏覽到網絡,機器名稱......」其實我不能這樣做,因爲出於某種原因,我放棄了理解,我無法從Newtwork上看到機器(我在一個龐大而龐大的組織中,所以訪問是受限制和怪異的!) –

+1

創建一個新的模塊,然後只需粘貼代碼並進行編輯即可。您可以通過點擊第一行並點擊'[F5]'(或從菜單欄中選擇「運行」)來運行該函數,並且還可以創建一個宏來運行它(通過「RunCode」操作)。 –

+0

謝謝,我試過,但它說「編譯錯誤:用戶定義的類型沒有定義」... –

0

你可以右鍵單擊一個鏈接表並選擇鏈接表管理器。選擇您想要處理的鏈接表,並在窗口中顯示下面的複選框始終提示輸入新位置,然後單擊確定按鈕。

您將被要求提供新位置。瀏覽並選擇文件,然後單擊確定。

+0

嗨特拉,謝謝你的回答,但這正是我不想做的。我編輯了我的問題,因爲可能不太清楚。 –

0

我喜歡在可訪問我們整個網絡的共享文件夾上設置文件DSN,然後使用鏈接表管理器訪問UNC路徑。爲此,我使用鏈接表管理器並在桌面上設置文件DSN。然後我複製並將DSN文件移動到共享的UNC目錄。然後,我進入Access並刪除鏈接表並重新創建鏈接表。爲此,在刪除鏈接表後,我執行以下操作:

  1. 我點擊ODBC數據庫 - >通過創建鏈接錶鏈接到數據源 - >確定。
  2. 單擊選擇數據源窗口中的文件數據源選項卡。在對話框的底部,您會看到「DSN Name:」,後面跟着一個文本框和一個New Button。您將輸入整個UNC路徑和文件名到該文本框(所以這是指您複製到UNC路徑的文件)。例如,我輸入\ ATD-SERVER1 \ AccessShare \ ContactsApp.accdb.dsn。然後點擊確定。

假設您有權訪問您鏈接到的服務器,將顯示鏈接表對話框,然後您可以從中選擇您的鏈接表!如果他們嘗試過,微軟無法讓這種直覺變得更加直觀。