Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 有没有办法判断另一个访问数据库是否链接到我的数据库?_Ms Access - Fatal编程技术网

Ms access 有没有办法判断另一个访问数据库是否链接到我的数据库?

Ms access 有没有办法判断另一个访问数据库是否链接到我的数据库?,ms-access,Ms Access,我有一个旧的Access数据库,有大量的查找表。据推测,这是一个仓库,供一堆其他部门制作的access应用程序链接。我们想杀了它。但是,我想知道是否有任何应用程序当前链接到它?将其移动到另一个目录。链接表具有硬编码路径。将其移动到其他目录。链接表具有硬编码路径。在数据库未使用时不会。在使用时,您应该看到一个LDB/LACCDB文件。您可以使用记事本打开它以查看工作站名称 如果您使用的是访问安全性,您还将看到访问用户ID。否则您将看到“Admin” 使用记事本打开.ldb/.laccdb文件将显示

我有一个旧的Access数据库,有大量的查找表。据推测,这是一个仓库,供一堆其他部门制作的access应用程序链接。我们想杀了它。但是,我想知道是否有任何应用程序当前链接到它?

将其移动到另一个目录。链接表具有硬编码路径。

将其移动到其他目录。链接表具有硬编码路径。

在数据库未使用时不会。在使用时,您应该看到一个LDB/LACCDB文件。您可以使用记事本打开它以查看工作站名称

如果您使用的是访问安全性,您还将看到访问用户ID。否则您将看到“Admin”

使用记事本打开.ldb/.laccdb文件将显示数据库中当前的用户以及数据库中的一些工作站。当一个人退出时,访问他们的工作站名称和访问登录id、Admin(除非您使用的是访问安全性)将保留在“插槽”或ldb文件中的记录中。下次有人进入MDB时,此插槽或记录可能会被覆盖,具体取决于ldb文件中该插槽或记录之前可用的插槽或记录


当数据库未使用时,不能使用。在使用时,您应该看到一个LDB/LACCDB文件。您可以使用记事本打开它以查看工作站名称

如果您使用的是访问安全性,您还将看到访问用户ID。否则您将看到“Admin”

使用记事本打开.ldb/.laccdb文件将显示数据库中当前的用户以及数据库中的一些工作站。当一个人退出时,访问他们的工作站名称和访问登录id、Admin(除非您使用的是访问安全性)将保留在“插槽”或ldb文件中的记录中。下次有人进入MDB时,此插槽或记录可能会被覆盖,具体取决于ldb文件中该插槽或记录之前可用的插槽或记录


您需要所有Access应用程序的完整路径和文件名;这可能是不可能的

对于那些您可以循环浏览的文件:

  • 连接到每个数据库以测试链接
  • 遍历TestForLinkDatabase.TableDefs中的所有表
  • 检查每个表是否有.SourceTableName和.Connect=YourLookupTableWarehouse。我认为SourceTableName是本地表的空字符串
  • 跟踪#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
    
    Private-Sub-CheckToSeeIfLinked()
    Dim数据库作为DAO.Database
    将Tdf调暗为DAO.TableDef
    将Tdfs变暗为TableDefs
    Dim wrk作为DAO.Workspace
    设置wrk=DBEngine.workspace(0)
    Dim TestDatabaseForLinks作为字符串
    TestDatabaseForLinks=“C:\FileNameToCheck.mdb”
    设置Dbs=wrk.OpenDatabase(TestDatabaseForLinks)
    设置Tdfs=Dbs.TableDefs
    对于Tdfs中的每个Tdf
    如果Tdf.Connect为“”,则
    Debug.Print“表:&Tdf.Name&”-链接到:&Tdf.Connect
    其他的
    Debug.Print“表:”&Tdf.Name&“未链接”
    如果结束
    下一个
    如果不是(Dbs什么都不是),那么
    星展银行,结束
    设置Dbs=Nothing
    设置Tdfs=无
    如果结束
    端接头
    
    您需要所有Access应用程序的完整路径和文件名;这可能是不可能的

    对于那些您可以循环浏览的文件:

  • 连接到每个数据库以测试链接
  • 遍历TestForLinkDatabase.TableDefs中的所有表
  • 检查每个表是否有.SourceTableName和.Connect=YourLookupTableWarehouse。我认为SourceTableName是本地表的空字符串
  • 跟踪#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
    
    Private-Sub-CheckToSeeIfLinked()
    Dim数据库作为DAO.Database
    将Tdf调暗为DAO.TableDef
    将Tdfs变暗为TableDefs
    Dim wrk作为DAO.Workspace
    设置wrk=DBEngine.workspace(0)
    Dim TestDatabaseForLinks作为字符串
    TestDatabaseForLinks=“C:\FileNameToCheck.mdb”
    设置Dbs=wrk.OpenDatabase(TestDatabaseForLinks)
    设置Tdfs=Dbs.TableDefs
    对于Tdfs中的每个Tdf
    如果Tdf.Connect为“”,则
    Debug.Print“表:&Tdf.Name&”-链接到:&Tdf.Connect
    其他的
    Debug.Print“表:”&Tdf.Name&“未链接”
    如果结束
    下一个
    如果不是(Dbs什么都不是),那么
    星展银行,结束
    设置Dbs=Nothing
    设置Tdfs=无
    如果结束
    端接头
    
    启动海报的好主意,但有几条评论。1) 您将需要运行所有服务器文件夹以查找MDB/ACCDB,并且您将丢失本地工作站上的一些文件夹。2) 这可能涉及MDB文件的日期,因此,如果将来有人希望看到用户最后一次触摸MDB的时间,这可能会产生误导。3) 至于Excel、Word、C#、VB.Net等非访问链接呢?@Tony Toews-我认为这符合一家公司想要摆脱文件而不是永远等待的典型场景(例如,一些例程只在年底运行)。1) 检查对此文件拥有权限的本地工作站2)目标是终止/消除将来的使用。3) 同意,但该问题只要求访问文件,我的回答没有误导性。抱歉,我对误导性的评论是因为MDB/ACCDB文件的日期可能与当前日期和时间相接触。因此,如果有人以后查看上次使用文件的时间,这将产生误导。所以你可能想