Страницы: 1
RSS
VBA. Динамический список переменных передать в SQL
 
Доброго времени суток.
Подскажите пожалуйста, как реализовать следующее:
в Excel  есть список значений(динамический, от 1 -до N)
Каким образом его можно брать в переменную, и  передавать в SQL ?
P.S. получение данный реализовано в VBA
 ниже пример с двумя  переменными.
Изменено: Евгений Квитницкий - 04.06.2014 15:30:46
 
создать переменную типа string, циклом забрать в нее данные с диапазона и влупить в in

Код
Dim SQL$, oCell As Range
For Each oCell In Sheets("ëèñò1").Range("A1:A10")
    SQL = SQL & "'" & oCell.Value & "',"
Next
SQL = Left(SQL, Len(SQL) - 1)  
  
' чего то там
where u.locatn in (" & SQL & ");" 

а вообще не очень читаем код, можно проще чонить
 
Цитата
Scripter пишет:
создать переменную типа string, циклом забрать в нее данные с диапазона и влупить в in
Круто, спасибо, то что надо  :)

Цитата
а вообще не очень читаем код, можно проще чонить
Записан рекордером, в принципе этого достаточно.  : )

еще раз спасибо большое
 
Эээхх.. к сожалению из за ограничений ввода данных в одну строку в VBA, не удается работать со списком более чем  100+ символов в переменной, а еще и сама SQL. :(
 
Цитата
Евгений Квитницкий пишет: ...из за ограничений ввода данных в одну строку в VBA, не удается работать со списком более чем100+ символов в переменной...
Не понял. Строковая переменная может содержать объём, ограничиваемый только памятью компьютера.
А если Вы имеете в виду, что строка редактора мала, то разбивайте её:
Код
Переменная = "Какая-то длинная строка" & _
    "Здесь мы её продолжаем" & _
    "а ещё здесь. И так далее...."
 
Цитата
Skif-F пишет:
что строка редактора мала, то разбивайте её:
Угу.. это я понимаю, осталось придумать как ее разбить..
Изменено: Евгений Квитницкий - 04.06.2014 22:09:35
 
Нет ничего проще, это же строка:
Код
Dim Стих As String
Стих = "У Локоморья дуб зелёный," & _
      "Златая цепь на дубе том." 
или так:
Код
 SQL = SQL & "'" & _
       oCell.Value & "',"
 
Если данные однотипные, то можно через LIKE вытащить то что вам нужно
Код
 where u.locatn LIKE '1A-%'
в данном случае выборка будет всех значений, которые начинкаются с 1A-
Изменено: Scripter - 05.06.2014 04:18:00
 
Цитата
Scripter пишет:  Если данные однотипные,
Данные не однотипные, это в примере я просто указал так.
Цитата
Skif-F пишет: SQL = SQL & "'" & _  oCell.Value & "',"
Не прокатывает, все равно все в одну строку собирает.
Цитата
Skif-F пишет: Нет ничего проще, это же строка:
понимаю что строка, но строка всегда  неопределенной длинны, может быть 5 символов, а может быть 205.
 
Как вариант циклом передать ваш список во временную таблицу (сделать insert) и в SQL использовать эту таблицу?
 
Цитата
pharmaprofi пишет: циклом передать ваш список во временную таблицу
Мм.. увы, вряд ли я знаю..

 
 
Не передавайте сами значения в строку, сделайте ссылку на саму область со списком.
... where field in(select range from [Лист$a1:a1000])
Excel + SQL = Activetables
 
Добрый вечер, а можно без цикла обойтись в таком примере:
.Open " SELECT INN, PhoneNumber  from ugph.dbo.v_ClientPhone WHERE INN = '" & Format(Sheets("Телефоны").Range("d2").Value, "General Number") & "' ", cn

мне нужно вместо "d2" взять весь столбец [d:d]
Страницы: 1
Наверх