VBA Excel无法连接到另一台计算机上的Access DB

时间:2016-09-08 13:27:31

标签: vba ms-access

我的一位同事正在尝试使用excel工具从访问数据库中提取数据。该工具在我的计算机上运行良好,但他遇到的问题是该工具无法与Access数据库连接。

我已经尝试通过检查excel选项是否正确来解决问题,即确保宏已启用等等但我仍然遇到问题。

问题必须是我的同事设置中尚未配置的内容,因为该工具对我没有任何问题。以下是读取Access DB的代码的一些部分:

Public Const pActuarialPWD = "password2"
Public Const QuoteDB = "N:\DWH\Commercial Ins\Fleet\Databases\Quote DB.accdb" 

    If bDBOpen = False Then
        'Connect to database
        If openQuotedb() = False Then
            MsgBox "Connection to database failed - contact Actuarial"
            Exit Sub
        End If
    End If


Function openQuotedb()

On Error GoTo ErrorHandler

    openQuotedb = False
        Set db = OpenDatabase(QuoteDB, False, False, "MS Access;PWD=" & pActuarialPWD)
    openQuotedb = True

    Exit Function

ErrorHandler:
    MsgBox "Couldn't connect to database. Please contact actuarial. Tool should not be used, as quote information will be lost", vbCritical

End Function

我已经多次在我的计算机和同事中完成了该程序,但我无法看到问题所在。当我走过代码行时," db = ..."在我的同事PC上并将鼠标悬停在db上,它读取" db = Nothing"而在我的网站上它成功连接到数据库。

您有什么想法可能会出错吗?在我的同事PC上连接到Access时,似乎没有正确设置exces。

我唯一能想到的是我使用Excel 2013而我的同事是在2010年。

1 个答案:

答案 0 :(得分:0)

以下功能给我带来了很多麻烦。我不知道它是否能解决你的问题,但总的来说会有所帮助。

我已经在许多应用程序中测试过它,并且有各种各样的变化和变量,它每次都有效,并且从未让我失望过。也许会帮助你。

CSSettings.Item.set("id", Wfm_AccNumber);
value = CSSettings.Item.get("id"); // or CSSettings.Item("id")

要调用该函数,请执行以下操作:

Public Function db_connect(Optional sel_db As Variant = "", Optional pass_be As Variant = ";PWD=<password>") As DAO.Database
        Dim db As DAO.Database

        If sel_db = "" Then
            sel_db = "<database_path>"
        End If

    On Error GoTo db_locked:
                Set db = DBEngine.OpenDatabase(sel_db, True, False, pass_be)
                GoTo DBclose:
    db_locked:
                Sleep 100
                Set db = DB_Connection.db_connect(sel_db, pass_be)
    DBclose:
            Set db_connect = db
    End Function

警告-声明!!! 小心。该函数具有等待机制并尝试连接而不会永远停止。如果您有错误的参数或数据库不存在,那么它将陷入无限循环。我从不打扰修复它,因为我知道问题并避免它。但是,如果需要,可以进行改进。