1

概要: テーブルで Docmd.Rename を実行すると、別の DB からのリンクで名前が変更されないテーブルが作成されるのはなぜですか?

TLC が必要な古いデータベースを修正しようとしています。これの一部は、いくつかのテーブルを含む、多くの未使用のクラフトを削除することです。これらのテーブルで DoCmd.Rename を呼び出す VBA プロシージャの最初の部分は、DELETE_ を前に付けて名前を変更します。

「削除」は正常に機能しているように見えますが、リンク テーブル マネージャーを使用して別の DB からテーブルを参照しようとすると、名前の変更はまったく行われませんでした。戻ってその DB をロードすると、テーブル名が変更されます。

名前を変更するために使用するのが最善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 に答える