ms-access - 断开与引用数据库的链接

标签 ms-access vba ms-access-2010

我正在使用两个 Access 2010 数据库。一个保存在我们公司的文件服务器上,第二个保存在本地的几台 PC 上。我想将我的 VBA 代码存储在网络数据库中,并将该文件用作本地副本的引用库。但是,使用该配置,只要打开本地副本,网络文件就会被锁定以进行编辑。使用VBA,是否可以在不关闭本地文件的情况下断开两个文件之间的链接?

为了找到解决方法,我设置了一个测试环境,如下所示:

  • 中创建了两个空白 Access 2010 数据库文件C:\DB 测试\
  • 本地 DB.accdb
  • 网络 DB.accdb
  • 新增模块 本地代码 本地 DB.accdb
  • 新增模块 远程代码 网络 DB.accdb
  • 添加了对 的引用Microsoft Visual Basic for Applications 可扩展性 5.3 本地 DB.accdb
  • 添加了对 的引用C:\DB 测试\网络 DB.accdb 本地 DB.accdb
  • 此引用添加了 网络数据库 到我的 VBA 编辑器的项目列表中,就好像文件已打开一样。
  • 将以下过程添加到 本地代码 中的模块本地 DB.accdb

  • Public Sub ClearDBReference()
    
        Dim DBFile As String
        Dim Proj   As VBIDE.VBProject
        Dim Ref    As Access.Reference
    
        DBFile = "C:\DB Test\Network DB.accdb"
    
        For Each Ref In Application.References  
            If Ref.FullPath = DBFile Then
    
                ' Successfully removes the library
                ' reference to the network database
                Application.References.Remove Ref
                Exit For
    
            End If  
        Next
    
        For Each Proj In Application.VBE.VBProjects
            If Proj.FileName = DBFile Then  
                ' Run-time error '440': Method 'Remove'
                ' of object '_VBProjects' failed
                Application.VBE.VBProjects.Remove Proj
    
            End If
    
        Next
    
        Set Ref = Nothing
        Set Proj = Nothing
    End Sub
    

    当我执行 ClearDBReference ,它成功删除了对 的库引用C:\DB 测试\网络 DB.accdb 但无法删除 的项目网络数据库 .就好像这两个文件之间有一个幽灵链接,但我不确定是什么导致了它或接下来要尝试什么。

    最佳答案

    不完全确定我理解您的情况,但听起来您只是指前端 (FE) 应用程序/数据库?

    如果是这样,您可以为本地机器创建一个 stub 应用程序,它只是在每次运行时将 FE 复制到用户的机器上,打开真正的 FE 应用程序,然后 stub 应用程序关闭。

    这样,服务器上的“主人”永远不会被锁定。当然,您不会修改此文件,您将在开发副本上工作,然后替换服务器上的主文件。

    ps,'master'应该是一个acde文件。

    关于ms-access - 断开与引用数据库的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23526902/

    相关文章:

    events - 每次预览/打印报表时会触发什么事件?

    Access 中的 SQL 查询提示消息框要求更改表名

    java - 获取数据库中的用户名和用户类型给程序Java

    vba - 自动接受 Outlook VBA

    excel - Application.FileDialog 与 GetOpenFilename : What is the difference?

    vba - Access 2013 运行时中未显示启动窗体

    trigonometry - 如何在MS-Access中执行三角函数Arc Cos(Excel中的ACOS())?

    sql - 试图在 VBA 中解决 Object required 错误

    ms-access - 如何刷新列表框

    javascript - 通过网页上的 Javascript Mailto 代码触发时,Outlook 检查器窗口不会始终自动关闭