powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SQL запрос к Oracle из Excel по диапазону
25 сообщений из 28, страница 1 из 2
SQL запрос к Oracle из Excel по диапазону
    #39193039
iWebCod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
SQL запрос к Oracle из Excel по диапазону
    #39193114
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то типа
Код: 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
SQL запрос к Oracle из Excel по диапазону
    #39193224
iWebCod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
SQL запрос к Oracle из Excel по диапазону
    #39193276
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всегда указывайте текст ошибки и на какой строке она возникает

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

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

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

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

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


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

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

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

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

В процессе потерял Conn.Open sconnect. Теперь все работает!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
SQL запрос к Oracle из Excel по диапазону
    #39540390
SM41lightsoul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Помогите, пожалуйста: пишу такой модуль для запроса к БД из 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
SQL запрос к Oracle из Excel по диапазону
    #39540395
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На какой строке?
...
Рейтинг: 0 / 0
SQL запрос к Oracle из Excel по диапазону
    #39540408
SM41lightsoul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, вот здесь
Код: vbnet
1.
cn.Open
...
Рейтинг: 0 / 0
SQL запрос к Oracle из Excel по диапазону
    #39540423
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая версия ADO подключена в референсах?
Если попробовать через позднее связывание (через CreateObject)?
...
Рейтинг: 0 / 0
SQL запрос к Oracle из Excel по диапазону
    #39540432
SM41lightsoul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
SQL запрос к Oracle из Excel по диапазону
    #39540452
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SM41lightsoulADO 2.0
ADO Recordset 2.8Не очень понял это сочетание. Вот тут у вас так?
...
Рейтинг: 0 / 0
SQL запрос к Oracle из Excel по диапазону
    #39540458
SM41lightsoul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, у меня вот так
Попробовал как у Вас (то есть убрать галочку у ADO Recordset 2.8) - без изменений
...
Рейтинг: 0 / 0
SQL запрос к Oracle из Excel по диапазону
    #39540469
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, как у меня не надо, надо поставить галочку на Data Objects 2.8, а не на 2.0
...
Рейтинг: 0 / 0
SQL запрос к Oracle из Excel по диапазону
    #39540472
SM41lightsoul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, пробовал так, всё равно ошибка :(
...
Рейтинг: 0 / 0
SQL запрос к Oracle из Excel по диапазону
    #39540473
SM41lightsoul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, а, нет, прошу прощения - эта ошибка исправилась. Спасибо большое!
правда стала вот эта возникать при запуске макроса
...
Рейтинг: 0 / 0
SQL запрос к Oracle из Excel по диапазону
    #39540480
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит нет нужного драйвера на компе
Изучите
https://www.connectionstrings.com/oracle/
...
Рейтинг: 0 / 0
SQL запрос к Oracle из Excel по диапазону
    #39540484
SM41lightsoul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, буду изучать, большое спасибо за уделенное время!
...
Рейтинг: 0 / 0
SQL запрос к Oracle из Excel по диапазону
    #39540608
SM41lightsoul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
SQL запрос к Oracle из Excel по диапазону
    #39540619
SM41lightsoul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И строка всё та же - cn.Open
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SQL запрос к Oracle из Excel по диапазону
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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