У меня есть лист 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, а не на новой? Есть идеи как это исправить?