Статус E_FAIL на некоторых машинах, а не на других - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть очень простой код VBA в Excel, который запрашивает базу данных MariaDB, используя ADO, а затем копирует этот набор записей в Excel. Проблема заключается в том, что когда код запускается на некоторых машинах, он работает нормально, а на других он возвращает «Поставщик данных или другая служба возвратили статус E_FAIL».

Dim sConn As String
Set adConn = New ADODB.Connection

If adConn.State = adStateClosed Then
    sConn = "Driver=MariaDB ODBC 3.0 Driver;" & _
        "Server=server;" & _
        "Database=database;" & _
        "User=user;" & _
        "Password=password;" & _
        "Option=3"
    adConn.ConnectionString = sConn
    adConn.Open
End If

Dim adRs As ADODB.Recordset
Set adRs = New ADODB.Recordset
    adRs.CursorLocation = adUseClient

Dim SQLQuery as String
SQLQuery = "SELECT * FROM table;"

adRs.Open SQLQuery, adConn, adOpenStatic, adLockPessimistic
    Worksheets("Sheet1").Range("A1").CopyFromRecordset adRs

Учитывая, что он работает на некоторых компьютерах, а не на других, я думаю, что это может быть связано с конфигурациями или драйверами на самих компьютерах, а не с Excel, VBA или SQL. Куда мне смотреть? Все машины являются 64-битными, а драйвер - 64-битным. Что-то не так в коде? В строке подключения?

1 Ответ

0 голосов
/ 13 ноября 2018

Я бросил поля DATE как CHAR, и ошибка исчезла. Я до сих пор не знаю, почему некоторые машины с одинаковой версией Windows, Excel и драйвером ODBC работали не так, как другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...