"Неуказанная ошибка" при открытии соединения 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 запрашивает другой внутренний необработанный источник, который не обновляется с изменениями, пока не произойдет сохранение. и это было причиной ошибки.
До сих пор не найдено никакого решения этой проблемы, но кажется, что проблема ограничена только одним пользователем.
Я написал несколько тестовых макросов в том же файле, в котором есть исходные макросы, которые открывают соединение БД с локальным файлом БД и удаленным файлом БД. Тест прошел успешно, но по какой-то причине один конкретный макрос все еще выбрасывает эту "неопределенную ошибку" на этом конкретном компьютере пользователя.
Мы пришли к выводу, что это, скорее всего, связано с повреждением офиса. Мы отремонтируем офис и, надеюсь, это исправит проблему. Даст вам знать, если это работает.
Благодарю.
Я получил эту ошибку при использовании одних и тех же переменных в двух разных модулях. Это исчезло, когда я изменил имена переменных. Странно, но это сработало!! Надеюсь, это решит вашу проблему. Спасибо