Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SQL запрос к Oracle из Excel по диапазону / 25 сообщений из 28, страница 1 из 2
16.03.2016, 11:01
    #39193039
iWebCod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
SQL запрос к Oracle из Excel по диапазону

Здравствуйте!

Прошу помощи! В VBA новичок.
Подскажите как дописать макрос так, чтобы он брал запросы/данные из диапазона Лист1 A1:E10 обрабатывал и вставлял полученные данные в диапазон Лист2 A1:E10.

На данный момент получилось брать сам sql запрос из Лист1 A1, далее выполнять его в Oracle и записывать его в Лист2 A1.

Но дальше продвинуться не получается.

Заранее благодарен!

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub sbADOExample_T2()
Dim sSQLQry As String
Dim ReturnArray
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim DBPath As String, sconnect As String
Dim rnZap As Range 'range
DBPath = ThisWorkbook.FullName
sconnect = "Provider=OraOLEDB.Oracle;Data Source=****;User ID=****;Password=****;"
rnZap = Worksheets("Лист1").Range("A1")
sSQLSting = rnZap
mrs.Open sSQLSting, Conn
Лист2.Range("A1").CopyFromRecordset mrs
mrs.Close
Conn.Close
End Sub
...
Рейтинг: 0 / 0
16.03.2016, 11:47
    #39193114
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
что-то типа
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim i As Integer, j As Integer
For i = 1 To 5
  For j = 1 To 10
    sSQLSting = Worksheets("Лист1").Cells(j, i)
    .....
  Next
Next
...
Рейтинг: 0 / 0
16.03.2016, 13:24
    #39193224
iWebCod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Shocker.Pro,

Спасибо! Немного переделал

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub sbADOExample_T4()
Dim sSQLQry As String
Dim ReturnArray
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim DBPath As String, sconnect As String
Dim i As Integer, j As Integer
DBPath = ThisWorkbook.FullName
sconnect = "*****"
For i = 1 To 10
    For j = 1 To 5
        sSQLSting = Sheets(1).Cells(i, j)
        mrs.Open sSQLSting, Conn
        Sheets(2).Cells(i, j).CopyFromRecordset mrs
        mrs.Close
    Next
Next
Conn.Close
End Sub



Но возникает ошибка run-time error 3709. Можете помочь?
...
Рейтинг: 0 / 0
16.03.2016, 14:13
    #39193276
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Всегда указывайте текст ошибки и на какой строке она возникает

А еще я здесь (как и в первом примере) не вижу открытия коннекта
...
Рейтинг: 0 / 0
16.03.2016, 14:32
    #39193313
iWebCod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Ошибка возникает в строке mrs.Open sSQLSting, Conn

там же коннект открывается Conn
...
Рейтинг: 0 / 0
16.03.2016, 14:34
    #39193316
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
А текст ошибки-таки будет?

Не путайте рекордсет и коннект. Коннект у вас - это Conn - он нигде не открывается
...
Рейтинг: 0 / 0
16.03.2016, 14:47
    #39193343
iWebCod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Shocker.Pro,

Да наверное путаю. Слабо пока разбираюсь.

Ошибка - Выходит сообщение: Run-time error '3709': Невозможно использование подключения для выполнения операции. Оно закрыто или не допускается в данном контексте.
...
Рейтинг: 0 / 0
16.03.2016, 14:53
    #39193353
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Вот, русским языком сказано, что подключение закрыто.


iWebCodНа данный момент получилось брать сам sql запрос из Лист1 A1, далее выполнять его в Oracle и записывать его в Лист2 A1.Раз получилось, значит коннект открывался, вернитесь к своему старому коду. Обычно это делается Conn.Open...
...
Рейтинг: 0 / 0
16.03.2016, 14:54
    #39193356
iWebCod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
sconnect = "Data Source=***;User ID=***;Password=***;"

Подключение к БД
...
Рейтинг: 0 / 0
16.03.2016, 14:55
    #39193358
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
iWebCodsconnect = "Data Source=***;User ID=***;Password=***;"

Подключение к БДНет. Это просто присваивание текстовой переменной текстового значения.
...
Рейтинг: 0 / 0
16.03.2016, 15:10
    #39193381
iWebCod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Shocker.Pro,

Огромное спасибо!

В процессе потерял Conn.Open sconnect. Теперь все работает!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
23.10.2017, 12:38
    #39540390
SM41lightsoul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Всем привет!
Помогите, пожалуйста: пишу такой модуль для запроса к БД из excel
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub ContoOracle()

Dim cn As ADODB.Connection
Dim qSQL As String
Dim rs As ADODB.Recordset

Set cn = New ADODB.Connection 'подключение
Set rs = New ADODB.Recordset 'буфер

    cn.ConnectionString = "Provider=MSDAORA.1;Data Source=burep_pri.rgs.ru;User ID=******;Password=******" 'параметры подключения
    cn.Mode = adModeRead 'режим подключения
    cn.Open
qSQL = "select * from GEVDONOV.programs" 'текст sql запроса
rs.Open qSQL, cn
ThisWorkbook.Worksheets("Лист1").Range("A1").CopyFromRecordset rs
rs.Close
cn.Close
Set cn = Nothing
Set rs = Nothing

End Sub



И постоянно выдает ошибку Run-time error 3706 APplication-define or object-define error
Подскажите,какой объект не удается определить?
Вроде делаю по аналогии с постами выше..
...
Рейтинг: 0 / 0
23.10.2017, 12:42
    #39540395
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
На какой строке?
...
Рейтинг: 0 / 0
23.10.2017, 12:54
    #39540408
SM41lightsoul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Shocker.Pro, вот здесь
Код: vbnet
1.
cn.Open
...
Рейтинг: 0 / 0
23.10.2017, 13:06
    #39540423
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Какая версия ADO подключена в референсах?
Если попробовать через позднее связывание (через CreateObject)?
...
Рейтинг: 0 / 0
23.10.2017, 13:13
    #39540432
SM41lightsoul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Shocker.Pro, ADO 2.0
ADO Recordset 2.8
Через CreateObject - имеется ввиду вот так
Код: vbnet
1.
2.
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")


вместо
Код: vbnet
1.
2.
Set cn = New ADODB.Connection 
Set rs = New ADODB.Recordset


?
Та же ошибка..
...
Рейтинг: 0 / 0
23.10.2017, 13:33
    #39540452
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
SM41lightsoulADO 2.0
ADO Recordset 2.8Не очень понял это сочетание. Вот тут у вас так?
...
Рейтинг: 0 / 0
23.10.2017, 13:40
    #39540458
SM41lightsoul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Shocker.Pro, у меня вот так
Попробовал как у Вас (то есть убрать галочку у ADO Recordset 2.8) - без изменений
...
Рейтинг: 0 / 0
23.10.2017, 13:57
    #39540469
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Нет, как у меня не надо, надо поставить галочку на Data Objects 2.8, а не на 2.0
...
Рейтинг: 0 / 0
23.10.2017, 14:00
    #39540472
SM41lightsoul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Shocker.Pro, пробовал так, всё равно ошибка :(
...
Рейтинг: 0 / 0
23.10.2017, 14:04
    #39540473
SM41lightsoul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Shocker.Pro, а, нет, прошу прощения - эта ошибка исправилась. Спасибо большое!
правда стала вот эта возникать при запуске макроса
...
Рейтинг: 0 / 0
23.10.2017, 14:16
    #39540480
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Значит нет нужного драйвера на компе
Изучите
https://www.connectionstrings.com/oracle/
...
Рейтинг: 0 / 0
23.10.2017, 14:20
    #39540484
SM41lightsoul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Shocker.Pro, буду изучать, большое спасибо за уделенное время!
...
Рейтинг: 0 / 0
23.10.2017, 16:23
    #39540608
SM41lightsoul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
Shocker.Pro, ан нет, всё равно появляется. Ничего не менял (кроме того, что Вы выше посоветовали), но внезапно снова стала появляться старая ошибка 3706 ((( чудеса какие-то..
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub ContoOracle()

Dim cn As Object 'ADODB.Connection
Dim qSQL As String
Dim rs As Object 'ADODB.Recordset
Set cn = CreateObject("ADODB.Connection") 
Set rs = CreateObject("ADODB.Recordset") 

    cn.ConnectionString = "Provider=MSDAORA.1;Data Source=***;User ID=***;Password=***" 
    cn.Mode = adModeRead 
    cn.Open
qSQL = "select * from table1" 
rs.Open qSQL, cn
ThisWorkbook.Worksheets("1").Range("A1").CopyFromRecordset rs
rs.Close
cn.Close
Set cn = Nothing
Set rs = Nothing
End Sub
...
Рейтинг: 0 / 0
23.10.2017, 16:38
    #39540619
SM41lightsoul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к Oracle из Excel по диапазону
И строка всё та же - cn.Open
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SQL запрос к Oracle из Excel по диапазону / 25 сообщений из 28, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]