2010-11-22 70 views
1

嘿。 我有一個獨立的PC上的主要訪問數據庫在網絡上,我有一個訪問數據庫與網絡上的鏈接錶鏈接到獨立的個人電腦。我通過創建一個網絡共享到獨立PC並通過路徑鏈接它們來鏈接這些表。我可以設置它,以便在打開數據庫時自動更新鏈接表。 本訪問中刷新鏈接表

+0

你可以修改你的使用無模棱兩可條款?你的前端在哪裏,你的後端在哪裏。無論如何,如果你有鏈接表,它們會在你更新時更新。有什麼意義? – 2010-11-22 08:02:51

+0

你有沒有Google更新訪問鏈接表?如果不是,爲什麼不呢?這是存在的最常見的訪問問題之一,已經以千萬種不同的方式回答了數百萬次。 – 2010-11-24 04:27:33

回答

1

您可以。我經常發現使用一個在啓動時運行的小檢查表單(通過啓動選項設置)並檢查各種事物(包括鏈接表)會很方便。爲此,我還在本地機器上保存了一個鏈接表的表格,儘管通過遍歷TableDefs集合可以獲得鏈接表的列表,我認爲保留列表會稍微安全一些。

檢查表單可以檢查所有鏈接,如果鏈接中斷或丟失,可以要求用戶提供新位置或使用固定位置。如果沒有發現問題,表單可以自行關閉並打開菜單或其他表單。

在鏈接到一個鏈接表的情況下,就可以獲取連接從使用方法:

CurrentDB.TableDefs("TableName").Connection 

下面是一些注意事項:

Sub RelinkTables(Optional strConnect As String = "") 
Dim db As DAO.Database 
Dim rs As DAO.Recordset 
Dim strSQL 
Dim tdf As DAO.TableDef 

On Error GoTo TrapError 

    Set db = CurrentDb 

    If strConnect = "" Then 
     ''Where Me.txtNewDataDirectory is a control on the check form 
     strConnect = "MS Access;PWD=databasepassword;DATABASE=" & Me.txtNewDataDirectory 
    End If 

    ''Table of tables to be linked with two fields TableName, TableType 
    Set rs = CurrentDb.OpenRecordset("Select TableName From sysTables " _ 
      & "WHERE TableType = 'LINK'") 

    Do While Not RS.EOF 
     ''Check if the table is missing 
     If IsNull(DLookup("[Name]", "MSysObjects", "[Name]='" & rs!TableName & "'")) Then 
      Set tdf = db.CreateTableDef(RS!TableName, dbAttachSavePWD, _ 
       rs!TableName, strConnect) 
      ''If the table is missing, append it 
      db.TableDefs.Append tdf 
     Else 
      ''If it exists, update the connection 
      db.TableDefs(rs!TableName).Connect = strConnect 
     End If 
     db.TableDefs(rs!TableName).RefreshLink 
     RS.MoveNext 
    Loop 

    Set db = Nothing 
    RS.Close 
    Set RS = Nothing 


Exit_Sub: 
    Exit Sub 

TrapError: 
    HandleErr Err.Number, Err.Description, "Relink Tables" 

End Sub