Сбой набора записей ADO при оценке EOF после обновления Excel - PullRequest
0 голосов
/ 24 января 2019

У меня есть лист Excel, который подключается к базе данных Basis через соединение ODBC. Он работал нормально, когда мы работали с Excel 2010 на Windows Server 2008, но затем мы обновили до Excel 2016 на Windows Server 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 перестал работать». Это также происходит при наведении указателя мыши на эту часть кода. Тот же код работает нормально, когда я пробую его в Excel 2010 на Windows Server 2008.

Есть идеи, почему он работает на старой версии Excel, а не на новой? Есть идеи как это исправить?

1 Ответ

0 голосов
/ 31 мая 2019

Четыре месяца спустя я наконец нашел ответ.Я использовал средство просмотра событий Windows для просмотра журналов ошибок для сбоев, в которых было указано

"Неправильное имя приложения: EXCEL.EXE, версия 16.0.4266.1001, отметка времени: 0x55ba1551 Неправильное имя модуля: BBjODBC.dll, версия 14.1.1.0, отметка времени: 0x5400df87 Код исключения: 0xc0000005

Это подтвердило, что проблема была с драйвером BBj. Оказывается, что лицо, ответственное за обновление этого драйвера, обновило егона всех жестких дисках сервера, за исключением диска C, который Excel решил использовать. В результате мы застряли, используя пятилетнюю версию драйвера, хотя наши специалисты утверждали, что все было в курсеВ настоящее время мы ожидаем обновления драйвера, так что, надеюсь, это решит проблему.

...