【问题标题】:ADO recordset crashes while evaluating EOF after Excel upgradeExcel 升级后评估 EOF 时 ADO 记录集崩溃
【发布时间】: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 更新的问题。

标签: excel vba odbc ado


【解决方案1】:

四个月后,我终于找到了答案。我使用 Windows 事件查看器查看了崩溃的错误日志,上面写着

"出错的应用程序名称:EXCEL.EXE,版本 16.0.4266.1001,时间 戳:0x55ba1551 错误模块名称:BBjODBC.dll,版本 14.1.1.0,时间戳:0x5400df87 异常代码:0xc0000005

这确认问题出在 BBj 驱动程序上。事实证明,负责更新该驱动程序的人已经在服务器的所有硬盘驱动器上更新了它,除了 Excel 决定使用的 C 驱动器。结果,即使我们的技术人员声称一切都是最新的,我们仍然无法使用五年前的驱动程序版本。我们目前正在等待更新驱动程序,因此希望这能解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2011-05-16
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多