如何以编程方式更新MS Access中的所有链接表引用

时间:2016-09-28 19:56:25

标签: ms-access auto-update

我想更新MS Accecss数据库中60多个表/ excel文件的链接表引用:

enter image description here

但是我不想手动进入所有60+,因为文件路径只需要改变“F:”......“到”E:......“。

如何通过编程方式完成质量重新分配?

2 个答案:

答案 0 :(得分:2)

这是一次性的吗?如果是的话,这可能是过度的,并且需要一些时间来完善,但从好的方面来说,你不需要一个单独的表来保持你的参考 如果您熟悉VBA,可以使用以下内容:

import pygame

pygame.init()

gameWindow = pygame.display.set_mode((1000,600));
pygame.display.set_caption("Practice")
#game starts
gameActive = True
while gameActive:
    for event in pygame.event.get():
        #print event
        if event.type == pygame.QUIT:
            gameActive = False

    pygame.quit()
quit()

这适用于没有密码的ODBC数据库。如果您的连接字符串更复杂,则必须进行调整。 以下是所有可能的连接字符串的列表。 Microsoft DAO Connection Strings

答案 1 :(得分:0)

以下代码执行3项操作:

  1. 它根据当前数据库的位置从表“链接表源”获取链接表的路径 - 有时我在本地驱动器上有它,有时它在网络服务器上。
  2. 它更新对源数据库的引用 - 我在该库中存储公共代码,我可以保留一个副本以便在我的所有应用程序中使用
  3. 它将每个链接表更新为表中定义的源 - 但仅适用于喜欢带有“公用表”名称的数据库的表
  4. Function relink_tables()
    
    If Left(CurrentDb().Name, 2) = "C:" Or Left(CurrentDb().Name, 2) = "B:" Then
        Source = "local"
        Else: Source = "network"
        End If
    Set rs = CurrentDb.OpenRecordset("select * from [linked table source] where source='" & Source & "'")
    Source = rs.Fields("path")
    
    For Each R In References
        If InStr(R.Name, "Common Tables") > 0 Then Application.References.Remove R
        Next R
    Application.References.AddFromFile Source
    
    x = 0
    Set TDefs = CurrentDb().TableDefs
    For Each table In TDefs
        If InStr(table.Connect, "Common Tables") = 0 Then GoTo NT
        table.Connect = ";DATABASE=" & Source
        table.RefreshLink
        x = x + 1
    NT:
        Next table
    Finish:
    MsgBox "remapped " & x & " tables"
    End Function