BE 和 FE 之间持续连接的代码 - 由于 BE 加密密码导致的错误

问题描述

我正在尝试提高我的 ms access 数据库性能,因此我使用以下代码始终保持 FE 和 BE 之间的连接

代码来源: https://www.fmsinc.com/microsoftaccess/performance/linkeddatabase.html

DAO OpenDatabase 方法 要创建到链接数据库的持久连接,请使用 DAO OpenDatabase 方法在 VBA 中打开 MS Access 数据库变量。只要您的应用程序正在运行,就保持此变量处于打开状态。

程序代码 下面的过程支持多个后端数据库。编辑包含数据库列表的部分以匹配您的后端数据库

Sub OpenAllDatabases(pfInit As Boolean)
  ' Open a handle to all databases and keep it open during the entire time the application runs.
  ' Params  : pfInit   TRUE to initialize (call when application starts)
  '                    FALSE to close (call when application ends)
  ' Source  : Total Visual SourceBook

  Dim x As Integer
  Dim strName As String
  Dim strMsg As String
 
  ' Maximum number of back end databases to link
  Const cintMaxDatabases As Integer = 2

  ' List of databases kept in a static array so we can close them later
  Static dbsopen() As DAO.Database
 
  If pfInit Then
    ReDim dbsOpen(1 To cintMaxDatabases)
    For x = 1 To cintMaxDatabases
      ' Specify your back end databases
      Select Case x
        Case 1:
          strName = "H:\folder\Backend1.mdb"
        Case 2:
          strName = "H:\folder\Backend2.mdb"
      End Select
      strMsg = ""

      On Error Resume Next
      Set dbsOpen(x) = OpenDatabase(strName)
      If Err.Number > 0 Then
        strMsg = "Trouble opening database: " & strName & vbCrLf & _
                 "Make sure the drive is available." & vbCrLf & _
                 "Error: " & Err.Description & " (" & Err.Number & ")"
      End If

      On Error GoTo 0
      If strMsg <> "" Then
        MsgBox strMsg
        Exit For
      End If
    Next x
  Else
    On Error Resume Next
    For x = 1 To cintMaxDatabases
      dbsOpen(x).Close
    Next x
  End If
End Sub

调用过程 在您的应用程序启动时调用它:

OpenAllDatabases True

完成后,调用它来关闭数据库变量/句柄:

OpenAllDatabases False

问题:

我的BE文件是加密的,当我运行代码时出现错误

[无法打开数据库文件路径”请确保驱动程序可用错误:密码无效。 (3031)] .

当我解密 BE 并重新运行代码时,它运行良好。

如何保持加密并解决此问题?

提前致谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)