2013-02-08 33 views
2

我有一個問題,我無法爲其添加適當的標題。我需要將前端分發到我們廣域網內的多個位置。後端表將位於每個人都可以訪問的特定驅動器上。如何使用指向不同驅動器號的鏈接表分配前端

我遇到的問題是,不是每個人都有包含映射到相同的盤符後端驅動器。看起來,Access通過路徑(即H:\ tables \ backend)引用後端的位置而不是服務器名稱(wvadrive1 \ tables \ backend)。

我知道,我可以通過VB代碼指的是服務器的名稱,而不是驅動器名,但通過鏈接表管理器/外部數據建立鏈接的表時,會出現訪問地圖它基於驅動器號。

有沒有簡單的解決方案,以確保每個人我distrubute這將有其表正確鏈接?第一次打開數據庫映射鏈接表時,我可以運行一些VBA嗎?

謝謝!

+0

使用VBA將TableDef .Connect屬性更改爲指向共享(UNC路徑)而不是驅動器號。 – HansUp 2013-02-08 20:35:36

+0

只需在自動執行或第一種形式的載入事件中拋出此項?我想我會選擇醜陋的解決方案,只是爲每個表手動執行tabledef.connect,而不是嘗試迭代並做一些漂亮的事情。 – Scotch 2013-02-08 20:42:08

+0

不,因爲UNC路徑對於所有用戶都是相同的,所以在給他們db文件之前進行。 – HansUp 2013-02-08 20:45:00

回答

2

使用VBA改變TableDef.Connect屬性指向文件共享(UNC路徑),而不是驅動器號。

在最簡單的情況下,所有用戶都可以使用相同的UNC路徑,所有的鏈接表在同一個數據庫文件...

Const cstrUncPath As String = ";DATABASE=\\Server\ShareName\AnotherFolder\YourDb.mdb" 
Dim db As DAO.database 
Dim tdf As DAO.TableDef 

Set db = CurrentDb 
For Each tdf In db.TableDefs 
    If tdf.Connect Like ";DATABASE=*" Then 
     tdf.Connect = cstrUncPath 
     tdf.RefreshLink 
    End If 
Next 
Set tdf = Nothing 
Set db = Nothing 

做吧的數據庫文件在分發之前它給用戶。如果你願意,你可以從db文件的用戶本地拷貝中運行一個類似的過程。

注意,代碼將只改變鏈接來訪問表。其他數據源(ODBC,Excel,文本文件等)的鏈接將被忽略。

如果您需要在多個訪問後臺數據庫鏈接到表,使用一個單獨的表,其中包括數據庫路徑和表/鏈接名稱。然後你可以打開表作爲記錄集並循環通過它來根據需要更改/創建鏈接。

+0

他們並不都鏈接到相同的後端,這就是爲什麼我可能要避免迭代。我會按照表格手動執行 - 這是一個很好的起點,謝謝。 – Scotch 2013-02-08 20:52:53

+0

在這種情況下,您可以從包含table_name和db_path的單獨表中驅動類似的代碼。 – HansUp 2013-02-08 20:54:26

相關問題