2011-11-07 8 views
1

要約:テーブル上のDocmd.Renameが、別のDBからのリンク上の名前を変更しないテーブルになるのはなぜですか?テーブルのアクセスDoCmd.Renameを使用する問題:リンクされた名前の名前が変更されていない

TLCが必要な古いデータベースを修正しようとしています。これは、いくつかのテーブルの中で未使用の塊をたくさん削除することです。最初の部分は、これらのテーブルでDoCmd.Renameを呼び出すVBAプロシージャで、名前がDELETE_の前に付いています。

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

名前を変更するのにTableDefs().Nameを使用することをお勧めしますか?それは良い方法ですか?私はRenameのような "公式の"方法が良いと思っていた。

私はWin7/64でAccess 2007を使用しています。ファイルはMDB形式です。

答えて

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 
関連する問題