【发布时间】:2019-05-31 05:12:12
【问题描述】:
我有一个 Excel 工作表,它使用 ODBC 连接连接到 Basis 数据库。当我们在 Windows Server 2008 上运行 Excel 2010 时它运行良好,但后来我们在 Windows Server 2016 上升级到 Excel 2016,它就不再运行了。
下面是一些演示问题的代码:
Public Sub cnntest()
Dim cnn As ADODB.Connection
Dim sql As String
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
cnn.Open "DSN=redacted;UID=redacted;PWD=redacted;"
sql = "SELECT ITEM FROM IC_ITM_MST WHERE ITEM = '1400-4'"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer
rs.Open sql, cnn
For Each a In rs.Fields
Debug.Print a.Name
Next a
Debug.Print rs.EOF
rs.Close
cnn.Close
End Sub
当我运行上面的代码时,它会打印字段的名称,所以我知道它正在连接到数据库并执行查询。但是,当它尝试评估rs.EOF 时,它会立即崩溃并抛出一条错误消息,指出“Microsoft Excel 已停止工作”。当我将鼠标悬停在代码的那部分时,它也会这样做。当我在 Windows Server 2008 上的 Excel 2010 上尝试时,完全相同的代码运行良好。
知道为什么它适用于旧版本的 Excel 而不是新版本吗?关于如何解决它的任何想法?
【问题讨论】:
-
Office 或操作系统的位数有变化吗?
-
一切都保持在 64 位。
-
您使用的是什么 ODBC 驱动程序(名称和版本)? Windows Server 2008 和 Windows Server 2016 上的 DSN 配置是否相同?您是否已将所有 MS 更新应用到 Excel 2016 和 Windows Server 2016?
-
两台计算机都使用 BBj ODBC 驱动程序,版本 14.01.01.00。 DSN 的配置相同,并且它们都是在 64 位版本的 ODBC 管理器中设置的。明天我会询问有关 Excel 和 Windows 更新的问题。