2011-03-18 59 views

回答

0

將其移動到另一個目錄。鏈接表具有硬編碼路徑。

+1

另一種方法是在其原始位置刪除NTFS權限。 – 2011-03-19 19:52:51

0

數據庫未使用時不可使用。當它在使用中時,你應該看到一個LDB/LACCDB文件。您可以用記事本打開它以查看工作站名稱。

如果您使用Access安全性,您還將看到Access用戶標識。否則,您將看到「Admin」

使用記事本打開.ldb/.laccdb文件將向您顯示當前在數據庫中的人員以及數據庫中的一些工作站。當某人退出訪問他們的工作站名稱和訪問登錄ID時,管理員(除非您使用的是Access安全性)留在「插槽」或​​記錄在ldb文件中。此插槽或記錄可能會在下次有人進入MDB時被覆蓋,具體取決於ldb文件中之前可用的插槽或記錄。

Determining the workstation which caused the Microsoft Access MDB corruption

1

您需要的完整路徑和所有Access應用程序的文件名;這可能是不可能的。

對於那些可以,遍歷所有文件:

  1. 連接到每個數據庫來測試鏈接。
  2. 循環遍歷TestForLinkDatabase.TableDefs中的所有表格
  3. 檢查每個表是否存在.SourceTableName和.Connect = YourLookupTableWarehouse。我認爲SourceTableName是本地表的空字符串。
  4. 跟蹤#3。如果在其他文件中找到單個實例,則可以選擇停止檢查其餘表。

同樣,它並不是萬無一失的,但是對於掌握浮動在您公司周圍的所有Access應用程序將是一個很好的練習。

*代碼不會排除系統表。

Private Sub CheckToSeeIfLinked() 
    Dim Dbs As DAO.Database 
    Dim Tdf As DAO.TableDef 
    Dim Tdfs As TableDefs 

    Dim wrk As DAO.Workspace 
    Set wrk = DBEngine.Workspaces(0) 

    Dim TestDatabaseForLinks As String 
    TestDatabaseForLinks = "C:\FileNameToCheck.mdb" 

    Set Dbs = wrk.OpenDatabase(TestDatabaseForLinks) 
    Set Tdfs = Dbs.TableDefs 

    For Each Tdf In Tdfs 

     If Tdf.Connect <> "" Then 
      Debug.Print "Table: " & Tdf.Name & " - Is Linked To: " & Tdf.Connect 
     Else 
      Debug.Print "Table: " & Tdf.Name & " is not linked" 

     End If 

    Next 

    If Not (Dbs Is Nothing) Then 
     Dbs.Close 
     Set Dbs = Nothing 
     Set Tdfs = Nothing 
    End If 

End Sub 
+0

好主意讓海報開始,但幾個意見。 1)您將需要遍歷所有服務器文件夾以查找MDB/ACCDB,並且您將錯過本地工作站上的一些文件夾。 2)這可能會觸及MDB文件的日期,因此如果將來有人正在查看用戶最後一次MDB被觸摸的時間,這可能會引起誤解。 3)非Access訪問鏈接如Excel,Word,C#,VB.Net等? – 2011-03-19 03:13:17

+0

@Tony Toews--我認爲這符合企業希望自己擺脫文件而不是永遠等待的典型場景(有些例程只在年底運行)。 1)檢查有權訪問該文件的本地工作站2)目標是殺死/消除未來的使用情況。 3)同意,但問題只是要求訪問文件,我的回答沒有誤導。 – JeffO 2011-03-19 11:45:21

+0

對不起,我對誤導性的評論是由於MDB/ACCDB文件的日期觸及當前日期和時間的可能性。因此,如果有人稍後想查看上次使用文件的時間,這會引起誤解。因此,您可能需要將MDB複製到臨時文件夾,然後對其進行分析。 – 2011-03-19 20:49:48

相關問題