Страницы: 1
RSS
Подключение к Базе данных Oracle из Excel с помощью VBA
 
Здравствуйте, раньше не имел дела с подключением к БД. Прошу помочь.
На просторах нашего форума нашел вот такую строку подключения
Код
Set cn = CreateObject("ADODB.Connection")
       cn.Open "Provider=MSDAORA.1;Data Source=***;Password=***;User ID=***"
но как настроить под свой лад не пойму. На счет Data Source=***;Password=***;User ID=*** все понятно
А вот Provider какой нужно использовать?
Я установил драйвер с сайта oracl "Oracle in instantclient_18_3" имя его "SQORA32.DLL".  
 
Пример 1
ConnectionString для всех языков програмирования однаковая.
если вы подключаетсь через другое ПО,  значить нужные драйвера уже есть.
 
Цитата
ivanok_v2 написал:
если вы подключаетсь через другое ПО,  значить нужные драйвера уже есть.
Как тогда определить какой драйвер мне нужно использовать?
 
Я подключаюсь так "Provider=msdaora"
"Все гениальное просто, а все простое гениально!!!"
 
Код
Provider=ORAOLEDB.ORACLE
Владимир
 
Вот такую ошибку мне выдает на строке подключения
Код
Set cn = CreateObject("ADODB.Connection")
       cn.Open "Provider=ORAOLEDB.ORACLE;Data Source=192.168.200.253:1521/xe;Password=org;User ID=pqw2"
Run-time error 3706
Не удается найти указанный поставщик.Вероятно, он установлен неправильно.
Изменено: mrzv - 31.08.2018 13:20:59
 
Установите клиент Oracle в полном объеме. По умолчанию указанный выше драйвер может и не устанавливаться. Кроме того, учтите, что разрядности (32- или 64-) клиента Oracle и MS Office должны совпадать.
Владимир
 
Проверить доступность провайдера можно через Меню/Данные/Из других источников/Из мастера подключений/Дополнительно (путь дан для Excel 2016). Имя провайдера: Oracle Provider for OLE DB.Там же можно протестировать его работоспособность.
Изменено: sokol92 - 31.08.2018 14:22:37
Владимир
 
Спасибо за совет
Цитата
sokol92 написал:
через Меню/Данные/Из других источников/Из мастера подключений/Дополнительно (путь дан для Excel 2016)
Я создал подключение ODBC DNS посмотрел там строку подключения . Вставил её в свой код и все получилось. Только вот русские буквы вопросами...
Код
cn.Open "ODBC;DBQ=192.168.200.253:1521/XE;UID=orga;PWD=a546;DSN=ALGO"
 
Вот такой код, я получаю нужную мне информацию, но кириллица вопросами. Что я делаю не так?

Код
Sub ImpOracle()
Set cn = CreateObject("ADODB.Connection")
       cn.Open "ODBC;DBQ=192.168.200.253:1521/XE;UID=orga;PWD=a546;DSN=ALGO"
'========================================================================================
sSql = "select partner_short_name, trunc(OUTCOME_DATE_SALE) d, sum(roh.sum_w_nds) s,count(1) h from t_partner p, T_REMOTE_ROZNICA_OUTCOME_HEAD roh where ROH.REMOTE_PARTNER_ID = p.PARTNER_ID and trunc(OUTCOME_DATE_SALE) between sysdate - 3 and sysdate group by partner_short_name, trunc(OUTCOME_DATE_SALE)"

Set Rs = GetRs(sSql, cn)
Sheets("Лист1").[a1].CopyFromRecordset Rs
Rs.Close
Set Rs = Nothing
End Sub

Function GetRs(sstr, cn)
Set rstdata = CreateObject("ADODB.Recordset")
    rstdata.Open sstr, cn
    Set GetRs = rstdata
Set rstdata = Nothing
End Function

весь код взял из этой статьи https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=60251

 
Вы, похоже, подключили провайдер Microsoft, а не Oracle. Мы всегда работали с провайдером Oracle.
Владимир
 
И так с проблемой провайдера я разобрался
Криво стояли драйвера oracle
Последний раз когда я их устанавливал я качал их вот отсюда http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html
скачивал вот этот файл:
64-bit ODAC 12.2c Release 1 (12.2.0.1.1) for Windows x64
[Released August 3, 2018]
ODAC122011_x64.zip - 406 MB (426,617,132 bytes)
В этом архиве есть нормальный setup

Правильная строка подключения выглядит вот так:
Код
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=OraOLEDB.Oracle;Data Source=192.168.200.253:1521/XE;User ID=***;Password=***"

что касается кодировки при использовании DSN вместо Provider, то мне так и не удалось разобраться. Но на мой взгляд способ подключения через Provider более правильный.

Спасибо всем за помощь.

Изменено: mrzv - 03.09.2018 15:30:00
 
Успехов!
Владимир
 
Владимир, работаем тоже с родными драйверами Oracle. Microsoft не используем.
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: 1
Наверх