【发布时间】: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 位的