Подключение от VBA к Oracle DB - PullRequest
1 голос
/ 16 июня 2019

С настройкой из текста ниже я успешно подключился и получил данные из БД.Однажды, когда выполнялся макрос, мой компьютер (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

1 Ответ

0 голосов
/ 17 июня 2019

Спасибо за ответы.
Я добавил эти местоположения в переменную PATH, но проблема та же.
Со сменой драйвера (Oracle в OraClient12Home1_32bit - это правильное имя в ODBC Data Source Administrator. (32 бита)), я получил следующую ошибку:
Ошибка адаптера протокола TNS.

Я могу подключиться из sqlplus к ДБ, но проблема в том, что я пытался подключиться через VBA.

@ Тим, спасибо за подсказку, но проблема не в этом, я проверял это раньше.
< Наконец-то я закончил с новой строкой подключения, как вы можете видеть ниже:

strConnection = "Provider = OraOLEDB.Oracle; Источник данных = xxx.xxxx.xxx: 1521 / xxxxx; ID пользователя = user1; пароль = 1234; "

Еще раз спасибо.

...