"Неуказанная ошибка" при открытии соединения ADODB

Я сталкиваюсь с "Unspecified error" только на одном компьютере моих пользователей.

Ошибка времени выполнения '-2147467259 (80004005)':
Неопределенная ошибка

Я использую приведенный ниже код VBA, чтобы открыть соединение с базой данных Access, расположенной на сетевом общем диске. Но код выдает ошибку всякий раз, когда он пытается запустить .Open заявление.

Я подумал, что это проблема с драйвером, установил Access 2007 Database Engine на ПК пользователя и заменил провайдера на " Microsoft.ACE.OLEDB.12.0 "но это не работает.

Код:

 Dim cn As ADODB.Connection
 Dim rs As ADODB.Recordset
 Dim retVal As Boolean
 Dim strSQL As String
 retVal = False

    On Error GoTo CatchError
     Set cn = New ADODB.Connection

     With cn
     .Provider = "Microsoft.Jet.OLEDB.4.0"
     .Properties("Jet OLEDB:Database Password") = Initialize.GetDBPwd 'returns pass
     .Open Initialize.GetDbConnectionString 'returns the network DB path
    End With

5 ответов

У меня та же проблема при создании соединения ADODB из локального файла Excel в другой локальный файл Excel.

Единственный способ решить эту проблему - повторно открыть основной файл Excel, из которого я делаю соединение. Больше ничего не сделано, и функция снова работает.

Моя функция подключения:

Sub SetConReadOnly(ByRef con1 As Object, ByRef rst1 As Object, sFile As String)
    If con1 Is Nothing Then Set con1 = CreateObject("ADODB.Connection")
    If rst1 Is Nothing Then Set rst1 = CreateObject("ADODB.Recordset")

    con1.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
     "Data Source=" & sFile & ";" & _
     "Extended Properties=""Excel 12.0;HDR=No;IMEX=1;"""
End Sub

(Я использую Office 2013 32-битный, Windows 7 64-битный)

Какая версия вашего Excel?

У меня была эта ошибка, и решением было смена провайдера. Попробуйте перейти на это:

On Error GoTo CatchError
 Set cn = New ADODB.Connection

 With cn
 .provider = "Microsoft.Mashup.OleDb.1"
 .Properties("Jet OLEDB:Database Password") = Initialize.GetDBPwd 'returns pass
 .Open Initialize.GetDbConnectionString 'returns the network DB path
End With

Я столкнулся с этой проблемой и обнаружил, что эта проблема относится к 64-разрядной версии Win7 с 32-разрядной установкой Office. Решение, с которым я случайно столкнулся, состояло в том, что если я сохранил файл вручную и повторно запустил код, он сработал без проблем. При попытке включить сохранение в обработчик ошибок и повторный вызов основной функции не сработало. Однако сохранение файла с помощью Application.SendKeys "^s" и последующий запуск файла через другой поток может повторить результат ручного сохранения.

При дальнейшем расследовании я обнаружил, что ошибка произошла из-за того, что некоторые столбцы в источнике были добавлены во время выполнения перед запросом, и кажется, что механизм sql запрашивает другой внутренний необработанный источник, который не обновляется с изменениями, пока не произойдет сохранение. и это было причиной ошибки.

До сих пор не найдено никакого решения этой проблемы, но кажется, что проблема ограничена только одним пользователем.

Я написал несколько тестовых макросов в том же файле, в котором есть исходные макросы, которые открывают соединение БД с локальным файлом БД и удаленным файлом БД. Тест прошел успешно, но по какой-то причине один конкретный макрос все еще выбрасывает эту "неопределенную ошибку" на этом конкретном компьютере пользователя.

Мы пришли к выводу, что это, скорее всего, связано с повреждением офиса. Мы отремонтируем офис и, надеюсь, это исправит проблему. Даст вам знать, если это работает.

Благодарю.

Я получил эту ошибку при использовании одних и тех же переменных в двух разных модулях. Это исчезло, когда я изменил имена переменных. Странно, но это сработало!! Надеюсь, это решит вашу проблему. Спасибо

Другие вопросы по тегам