Проблема с использованием Access DoCmd.Rename для таблицы: связанные имена не переименованы - PullRequest
1 голос
/ 07 ноября 2011

Резюме: почему Docmd.Rename для таблицы может привести к появлению таблиц, которые не меняют имя по ссылке из другой БД?

Я пытаюсь исправить старую базу данных, которая нуждается в TLC.Частично это приводит к удалению большого количества неиспользованных фреймов, среди которых несколько таблиц.Первая часть, если процедура VBA, которая вызывает DoCmd.Rename для этих таблиц, переименовывает с добавлением DELETE_.

«Удаление» выглядит нормально, но когда я пытаюсь ссылаться на таблицы из другой БД, используя связанную таблицуменеджер, никаких переименований не произошло вообще.Если я возвращаюсь и загружаю эту БД, имена таблиц меняются.

Лучше ли использовать TableDefs().Name для переименования?Это лучший метод?Я предположил, что «официальный» способ, как Rename, будет лучше.

Я использую Access 2007 на Win7 / 64.Файлы в формате MDB.

1 Ответ

0 голосов
/ 06 декабря 2011

Вы хотите переименовать таблицы в связанной базе данных?Если это так, вы можете использовать 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
...