2010-11-22 71 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