С настройкой из текста ниже я успешно подключился и получил данные из БД.Однажды, когда выполнялся макрос, мой компьютер (windows 10) потерял питание, и с этого момента я получаю сообщение об ошибке каждый раз, когда пытаюсь подключиться к БД (только пока пытаюсь подключиться через VBA) с помощью следующих действий.сообщение: Ошибка времени выполнения '-2147467259 (80004005)':[Microsoft] [Драйвер ODBC для Oracle] [Oracle] Ошибка при попытке получить текст для ошибки ORA-01019 Ошибка, которую я получил от строки с командой "cn.Open (strConnection)"Я установил ODAC 12c 32bit, потому что у меня Excel 32bit.Я думаю, что эта ошибка активна из-за информации из некоторого регистра, который заблокирован после того, как ПК потерял питание во время извлечения данных, но я не могу найти его.Любая помощь или намек будут драгоценны для меня.Заранее спасибо
Конфигурация:
Переменные среды:ORACLE_HOME = C: \ app \ client \ xxxx \ product \ 12.2.0 \ client_1PATH = C: \ app \ client \ xxxx \ product \ 12.2.0 \ client_1 \ Network \ AdminPATH = C: \ app \ client \ xxxx \ product \ 12.2.0 \ client_1 \ Network \ Admin \ binРекомендации - В.Б.Проект:Visual Basic для приложенийБиблиотека объектов Microsoft Excel 16.0Библиотека объектов Microsoft Forms 2.0Библиотека данных Microsoft ActiveX 2.8.Библиотека записей объектов данных Microsoft ActiveX 2.8Библиотека Microsoft OLE DB Simple Provider 1.5Библиотека типов OraOLEDB 1.0Активные услуги:OracleOraClient12Home1_32bitMTSRecoveryServiceЯ попытался удалить Oracle Client и установить его снова, но безуспешно.Также я создал переменную ORACLE_HOME и перепробовал несколько разных вариантов строки подключения и комбинации включенных ссылок, но ошибка все та же.
Dim strConneciton As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
strConneciton = "Driver={Microsoft ODBC for Oracle};" & _
"CONNECTSTRING=(DESCRIPTION=" & _
"(ADDRESS=(PROTOCOL=TCP)" & _
"(HOST=xxx.xxxx.xxx)(PORT=1521)" & _
"(CONNECT_DATA=(SERVICE_NAME=xxxxx)));user id=user1;password=1234;")
cn.Open (strConneciton)
If cn.State = adStateOpen Then
cn.Close
MsgBox "Completed!"
Else
MsgBox "Connection failed!"
End If