Страницы: 1
RSS
Получение данных из БД Oracle
 
Добрый день, уважаемые знатоки!

Нужно вытащить информацию из БД Oracle SQL запросом с помощью VBA на лист 1. Помогите пожалуйста дописать код

Код
Sub adsads()


Set objRecordset = CreateObject("ADODB.Recordset")
Set objConnection = CreateObject("ADODB.Connection")

ServerName = "ServerName" 
UID = "UID" 
PWD = "PWD" 
ConnectString = "Provider=OraOLEDB.Oracle;" & _
                "Data Source=" & ServerName & _
                ";User ID=" & UID & ";Password=" & PWD
                
 
iSQL = "SELECT ID, CLASS_ID, C_1, C_2, REF2, C_3, REF3, C_4, REF4, TO_CHAR(C_5) C_5, TO_CHAR(C_6) C_6, C_7, REF7, C_8, C_9, REF9, C_10, REF10, C_11, REF11, C_12, REF12, C_13, REF13, C_14, C_15, C_16, REF16, U_1, TO_CHAR(C_17) C_17, U_2, U_3, U_4, U_5, U_6, U_7 FROM IBS.VW_CRIT_AC_FIN_OPEN WHERE (CLASS_ID = 'AC_FIN') AND ((C_1 LIKE '407%%') AND (ROUND(C_5, 2) = '1348.29')) AND (ROWNUM <= 10000) ORDER BY U_5"


objConnection.Open ConnectString
objRecordset.Open iSQL, objConnection

Sheets(1).Cells(1, 1).CopyFromRecordset objRecordset

End Sub

Изменено: QQQennedy - 21.08.2017 16:05:36
 
Может проще через Power Query получить данные на лист, а потом уже делать что нужно.
Арфы - нет, возьмите бубен.
 
У меня 2003 офис( Обновил код в шапке, ошибок не выдает, но и инфа на листе не появляется. Я даже не понимаю, как в блоке Locals или где еще посмотреть выходные данные (должна быть одна строка)
Изменено: QQQennedy - 21.08.2017 16:06:00
 
У меня доступа к Оракл нет. Поэтому сделать пример  проблематично. Но по принципу  других запросов там ничего сложного. Единственное там нужно указать место сохранения.
Арфы - нет, возьмите бубен.
 
Udik, ну хотя бы по синтаксису гляньте пожалуйста, все ли правильно?

Вроде авторизацию прохожу нормально в БД, но RecordCount в Recordset имеет значение "-1" почему-то
Изменено: QQQennedy - 21.08.2017 16:32:34
 
что глянуть -то? ВБА код я всё  равно не проверю, Power Query тоже. Да он с 2010 работает.
Арфы - нет, возьмите бубен.
 
Udik, понял, тем не менее спасибо)  
 
Доброе время суток.
А в чём проблема? На вскидку в коде всё нормально. Можно придраться разве что к тексту запроса ROUND(C_5, 2) = '1348.29', округляете числовое поле, а сравниваете со строкой, но как правило "движки" могут сделать приведение типов, если возможно. Ну, и Recordset, Connection нужно закрывать методом Close, но на копировании это не сказывается.
Изменено: Андрей VG - 21.08.2017 16:37:41
 
вот тут код можете глянуть http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=60251&amp...
Арфы - нет, возьмите бубен.
 
Суть в том, что беру код запроса из АБС (автоматизированная банковская система) IBSO, так вот, код запроса одного отчета работает, другого - нет. Пытаюсь найти какие-то закономерности.  
 
Цитата
QQQennedy написал:
од запроса одного отчета работает, другого - нет
Тогда и тот и другой работают, просто этот другой не возвращает данных в силу условий фильтра - нет таких данных. Начните с простого, что вернёт фильтр Where ROWNUM < 2 (должен вернуть одну строку)
Страницы: 1
Читают тему
Наверх