【问题标题】:Problems connecting VBA to Access Database将 VBA 连接到 Access 数据库时出现问题
【发布时间】:2017-11-01 10:38:33
【问题描述】:

我在名为 MicroStation 的绘图程序中使用 VBA。该程序只是连接到 Access 数据库文件以读取数据并返回到 MicroStation。我从 connectionstrings.com 获得的连接已经使用了一段时间,但后来停止了。除了可能的安全设置之外,我无法弄清楚发生了什么变化,但我读过的所有帖子似乎都没有表明这一点。

这是我之前使用的连接字符串。如果我用谷歌搜索这个问题,再加上搜索 StackOverflow 90% 的帖子都包含这个连接字符串,没有任何问题。

Set conn = New ADODB.Connection
conn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=" & sDBFullName & ";Uid=Admin;Pwd=;"
    "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=" & sDBFullName & ";" & _
    "Jet OLEDB:Database Password=" & cPassword & ";Persist Security Info=False"

由于公司已经升级到Office 2016,我认为它可能是连接字符串,所以我找到并使用了这个更新的。

Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=" & sDBFullName & ";Uid=Admin;Pwd=pwd;"

当使用顶部连接字符串时,MicroStation 将简单地崩溃而没有错误消息。如果我使用第二个,我会收到错误消息“灾难性故障”。调试时我可以将其缩小到 conn.open

这两个连接字符串都可以在多台 PC 上工作,但不能在工作环境中工作。

所以我的问题是。什么可能导致这些问题?我应该注意什么?我正在努力弄清楚为什么会这样。 用户能够使用访问权限读取和写入数据库,所以我认为这不是权限问题,它过去一直运行良好(但我无法直接回答发生了什么变化) 我还去了创建一个简单的 VB.NET 程序以连接到数据库的步骤,没有任何问题。这使我排除了损坏的数据库连接器或任何带有 Access 的东西。如果它有助于追查问题,我很乐意发布整个模块。

提前感谢,我真的对这个问题感到困惑!

【问题讨论】:

  • 这个东西应该足够健壮,但正式的分号;是一个分隔符,而不是一个终止符。所以Pwd=pwd;"是错误的,应该去掉最后一个分号。
  • sDBFullName 的值是多少?你确定它不包含保留字符吗?
  • 会不会存在 32 位(MicroStation)与 64 位(Access 12.0 驱动程序)的问题?
  • sDBfullname 的值正确。我确实检查过,但它只是路径到服务器位置,不包含任何特殊字符或任何东西。 Access 驱动程序是 32 位的,明天我会检查 MicroStation,但我很确定它也是 32 位的。 Office 是 32 位的。
  • 我已经检查过了,除了 Windows 之外的都是 32 位的

标签: vba database-connection


【解决方案1】:

上周 IT 将 Microsoft Office 升级到 2016-32 位后,我一直在为 Microstation 中的完全相同的错误而苦苦挣扎。我终于能够通过为用户安装 Microsoft Sharepoint Designer 2013 来解决它。它使 Microsoft.ACE.oledb.15.0 再次从 Microstation SS-3/4/10 32Bit 与 ACCDB 文件对话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多