断开引用数据库的链接

Chr*_*s D 6 vba access-vba ms-access-2010

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

为了找到解决方法,我按如下方式设置了测试环境:

  1. C:\ DB Test \中创建了两个空白的Access 2010数据库文件
    • 本地DB.accdb
    • 网络DB.accdb
  2. 将模块LocalCode添加到本地DB.accdb
  3. 将模块RemoteCode添加到Network DB.accdb
  4. 本地DB.accdb中添加了对Microsoft Visual Basic for Applications Extensibility 5.3引用
  5. 本地DB.accdb中添加了对C:\ DB Test\Network DB.accdb引用
    • 此引用将网络数据库添加到我的VBA编辑器的项目列表中,就像文件已打开一样.
  6. 将以下过程添加到Local DB.accdb中LocalCode模块
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
Run Code Online (Sandbox Code Playgroud)

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

小智 0

有什么原因导致两个数据库都不能位于服务器上吗?

情况略有不同,但我们总是将前端和后端放在带有 accdb 的服务器上 - 这样就不会出现网络中断带来的问题。还提高了性能并无需在本地 PC 上备份文件。