2011-03-18 74 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

相关问题