Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Sql запрос из Excel к Oracle с изменяемыми переменными в запросе. / 18 сообщений из 18, страница 1 из 1
20.10.2015, 13:10
    #39081157
Эрик Скабичевский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
Доброго дня.
Проблема.
В тексте VBA есть написанный рабочий запрос к Oracle серверу из Excel.
И в нём есть переменная, которую необходимо модифицировать с помощью ввода с клавиатуры
Размер/вид - например 10671473724

Проблема в том, что при исполнении sql-запроса в нём передаётся не значение переменной, а её название...

Подключение идёт через ADODB.

P.S. Пока ищу в Google.
...
Рейтинг: 0 / 0
20.10.2015, 13:13
    #39081163
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
Эрик Скабичевскийпри исполнении sql-запроса в нём передаётся не значение переменной, а её название...
У Oracle нет даже теоретического шанса узнать, какое значение имеет переменная в Excel.
Просто подставляй вместо её имени само значение в текст запроса. Или используй запрос с параметром.
...
Рейтинг: 0 / 0
20.10.2015, 13:34
    #39081196
Эрик Скабичевский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
AkinaЭрик Скабичевскийпри исполнении sql-запроса в нём передаётся не значение переменной, а её название...
У Oracle нет даже теоретического шанса узнать, какое значение имеет переменная в Excel.
Просто подставляй вместо её имени само значение в текст запроса. Или используй запрос с параметром.

Как подставить само значение в текст запроса?
Самомодифицировать код VBA ? Каким образом?

Запрос уже нарисован, запрос уже нарисован, но не отправлен ещё в Oracle.

Например - кусочек:
sqlstr = "SELECT CODE, NAME FROM DATABASE " & _
" where ( client_id = read_from_keyboard AND list = 0) "

rsOra.Open sqlstr, cnOra

Как мне менять read_from_keyboard на набор цифири, введённой с клавиатуры,
чтобы он корректно обрабатывался Oracle ?

Если я меняю в запросе read_from_keyboard на циферки, то естессно - всё нормально.
...
Рейтинг: 0 / 0
20.10.2015, 13:41
    #39081213
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
При сборке
Код: vbnet
1.
2.
sqlstr = "SELECT CODE, NAME FROM DATABASE " & _
" where ( client_id = " & CStr(read_from_keyboard) & " AND list = 0) "


либо при подготовке
Код: vbnet
1.
sqlstr = Replace(sqlstr, "read_from_keyboard", read_from_keyboard)
...
Рейтинг: 0 / 0
20.10.2015, 13:41
    #39081214
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
Пардон
Код: vbnet
1.
sqlstr = Replace(sqlstr, "read_from_keyboard", CStr(read_from_keyboard))
...
Рейтинг: 0 / 0
20.10.2015, 18:00
    #39081644
Эрик Скабичевский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
Спасибо огромное !

И в тему - небольшое уточнение.

Почему при вводе name/pass через InputBox,
например так:
name = InputBox("Вводи имя", "Ввод")
pass = InputBox("Вводи пароль", "Ввод")

соединение cnOra.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=database;User ID=name;Password=pass"
не работает ?

логин/пароль, вбитый как строка - работает вполне прилично.
И как исправить ?

Заранее благодарю...
...
Рейтинг: 0 / 0
20.10.2015, 18:06
    #39081653
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
потому что неправильно написали:

Код: vbnet
1.
cnOra.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=database;User ID=name;Password=pass"



нужно так:

Код: vbnet
1.
cnOra.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=database;User ID=" & name & ";Password=" & pass
...
Рейтинг: 0 / 0
22.10.2015, 14:41
    #39083645
Эрик Скабичевский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
Спаасибо.
Работает...
...
Рейтинг: 0 / 0
24.11.2015, 20:53
    #39112660
Liubomyr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
Подскажите пожалуйста, похожая задача, только хочу передать значение с определенной ячейки, в sql. Что то такое:

Код: sql
1.
2.
3.
4.
...
thisSql = "SELECT * FROM Table_name" & _
          "where sub_position_nummer = [A10];"
...



На сколько понимаю, нужно обявить переменную, которая примет значение с ячейки:

Код: vbnet
1.
2.
3.
-- присваиваю значение для переменной
Dim var1 Integer
Var1 = Sheet1.Range("A10").Select



П.С. С ВБА все плохо, подскажите если где то не прав...
...
Рейтинг: 0 / 0
24.11.2015, 21:45
    #39112683
Liubomyr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
Разобрался, может кому то пригодиться:

Код: vbnet
1.
2.
Dim var1 as Integer
Var1 = Sheet1.Range("A10").Value





Код: sql
1.
2.
thisSql = "SELECT * FROM Table_name" & _
          "where clo_name= " & Var1 & ";"
...
Рейтинг: 0 / 0
24.11.2015, 21:45
    #39112684
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
Код: vbnet
1.
Var1 = Sheet1.Range("A10").Value


еще пробел перед where не забудь
...
Рейтинг: 0 / 0
25.11.2015, 17:02
    #39113382
Liubomyr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
да, спасибо! Все получилось... теперь интересует, можно ли несколько ечеек передать - масив?

что-то по типу - "A10:А20"
...
Рейтинг: 0 / 0
25.11.2015, 17:16
    #39113409
Liubomyr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
что бы более понятно -
в диапазон вводят значения, необходимо что бы эти значения передались в фильтр (пока реализовал только для одного значения)
column = переменная

необходимо:
column in (знач,знач,знач,знач ... )

еще_ не весь диапазон "A10:А20" может быть заполнен, в таком случае, передать
column in (знач,знач,знач,знач, null, null... )
...
Рейтинг: 0 / 0
25.11.2015, 17:33
    #39113424
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
Дык пожалуйста
Код: vbnet
1.
2.
Dim var1 as Variant
Var1 = Sheet1.Range("A10:A20")
...
Рейтинг: 0 / 0
25.11.2015, 17:42
    #39113434
Liubomyr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
Shocker.Pro,

Я тоже так подумал... но получил run-time error '13' : Type mismatch

Вот мой пример:

Код: vbnet
1.
2.
Dim VAR As Variant
VAR= Sheet1.Range("A10:A20")



Код: vbnet
1.
2.
3.
thisSql = " select col1, col2 " & _
 " from  table " & _
 " where col_name in " & VAR & " ;"



Подозреваю, я неверно передаю переменную - масив, в sql ...
...
Рейтинг: 0 / 0
25.11.2015, 17:44
    #39113437
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
причем тут sql?
Ты пытаешься неявно преобразовать массив в строку. Ничего не выйдет, сериализуй явно

ЗЫ: еще ошибка - IN в SQL требует скобок
...
Рейтинг: 0 / 0
25.11.2015, 17:47
    #39113443
Liubomyr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
Shocker.Pro ЗЫ: еще ошибка - IN в SQL требует скобок это случайно

Shocker.Proсериализуй явно - имеете ввиду через цыкл?
...
Рейтинг: 0 / 0
25.11.2015, 17:59
    #39113458
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запрос из Excel к Oracle с изменяемыми переменными в запросе.
Liubomyr- имеете ввиду через цыкл?да
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Sql запрос из Excel к Oracle с изменяемыми переменными в запросе. / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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