1

摘要:为什么表上的 Docmd.Rename 会导致表不会通过来自另一个数据库的链接更改名称?

我正在尝试修复需要 TLC 的旧数据库。其中一部分是删除许多未使用的杂物,其中包括一些表格。第一部分是在这些表上调用 DoCmd.Rename 的 VBA 过程,重命名前带有 DELETE_。

“删除”似乎工作正常 - 但是当我尝试使用链接表管理器从另一个数据库引用表时,根本没有发生重命名。如果我回去加载那个数据库,表名就会改变。

TableDefs().Name改名最好用吗?这是更好的方法吗?我认为像重命名这样的“官方”方式会更好。

我在 Win7/64 上使用 Access 2007。文件为 MDB 格式。

4

1 回答 1

0

您想重命名链接数据库中的表吗?如果是这样,您可以使用 OpenDatabase 来引用链接的 Access 数据库。您可以尝试以下方法:

Dim dbLink As DAO.Database
Dim dbCurr As DAO.Database
Dim ws As DAO.Workspace
Dim rst As DAO.Recordset
Dim tdf As TableDef

Set ws = DBEngine.Workspaces(0)
Set dbCurr = CurrentDb

For Each tdf In dbCurr.TableDefs
    sConn = tdf.Connect
    sSource = tdf.SourceTableName
    sName = tdf.Name

    If InStr(sConn, ";DATABASE=") > 0 Then
        strdb = Mid(sConn, InStr(sConn, ";DATABASE=") + 10)

        If InStr(sConn, "PWD") > 0 Then
            sPWD = Left(sConn, InStr(sConn, ";DATABASE="))
        Else
            sPWD = vbNullString
        End If

        If Dir(strdb) <> vbNullString Then
            Set dbLink = ws.OpenDatabase(strdb, False, False, sPWD)
            dbLink.TableDefs(sSource).Name = "DELETE_" & sSource
        End If
    End If

Next
于 2011-12-05T23:39:27.723 回答