在访问中刷新链接表

时间:2010-11-22 03:37:23

标签: ms-access linked-list access-vba

嘿。 我的主要访问数据库位于网络上独立的PC上,我有一个访问数据库,网络上的链接表链接回独立PC。我通过创建网络共享到独立PC并通过路径链接它来链接表。我可以进行设置,以便在打开数据库时自动更新链接表。 本

1 个答案:

答案 0 :(得分: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
相关问题