Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Передача данных из combobox в запрос, в условие WHERE - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Передача данных из combobox в запрос, в условие WHERE (Макросы/Sub)
Передача данных из combobox в запрос, в условие WHERE
alexban65 Дата: Воскресенье, 09.09.2018, 01:01 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Приветствую уважаемых форумчан!

Не получается передать данные из combobox в запрос. в условие WHERE, по событию ComboBox_Change().
Запрос к базе должен вернуть отобранный по условию recordset
Собака порылась,видимо, тут:
[vba]
Код

Private Sub ComboBox2_Change()
'Результат запроса, с выбранным значением из комбобокса2 - в WHERE'
'НЕ работает...((('

'Обьявление переменных'
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'Соединение с базой и получение данных'
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\TMP\Project.mdb; Jet OLEDB:Database;"
cn.Open ConnectionString
rs.CursorType = adOpenStatic
rs.LockType = adLockBatchOptimistic
'Запрос'
rs.Open "SELECT * FROM Itog WHERE id1 LIKE '" & UserForm.ComboBox2.Text & "' AND IS NOT NULL ORDER BY 1", cn
'Заполнение RecordSet -  работает цикл, пока не кончится рекордсет'
Do While Not rs.EOF
           ComboBox2.AddItem rs.Fields(0) 'комбобокс заполняется значениями из поля id1(можно через массив\цикл?)'
           rs.MoveNext
Loop
'Копирует полученные данные селекта с условием, из RecordSet, на лист с ячейки'
ActiveSheet.Range("B12").CopyFromRecordset rs
'Закрываемся, очищаемся'
rs.Close
cn.Close
Set cn = Nothing
Set rs = Nothing
    
End Sub
[/vba]

Опыта в VBA немного, учусь на ходу, на конкретной задаче-так что просьба отнестись с пониманием и сильно не пинать... :)
К сообщению приложен файл: 2265254.zip(87.7 Kb)


Сообщение отредактировал alexban65 - Воскресенье, 09.09.2018, 11:49
 
Ответить
СообщениеПриветствую уважаемых форумчан!

Не получается передать данные из combobox в запрос. в условие WHERE, по событию ComboBox_Change().
Запрос к базе должен вернуть отобранный по условию recordset
Собака порылась,видимо, тут:
[vba]
Код

Private Sub ComboBox2_Change()
'Результат запроса, с выбранным значением из комбобокса2 - в WHERE'
'НЕ работает...((('

'Обьявление переменных'
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'Соединение с базой и получение данных'
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\TMP\Project.mdb; Jet OLEDB:Database;"
cn.Open ConnectionString
rs.CursorType = adOpenStatic
rs.LockType = adLockBatchOptimistic
'Запрос'
rs.Open "SELECT * FROM Itog WHERE id1 LIKE '" & UserForm.ComboBox2.Text & "' AND IS NOT NULL ORDER BY 1", cn
'Заполнение RecordSet -  работает цикл, пока не кончится рекордсет'
Do While Not rs.EOF
           ComboBox2.AddItem rs.Fields(0) 'комбобокс заполняется значениями из поля id1(можно через массив\цикл?)'
           rs.MoveNext
Loop
'Копирует полученные данные селекта с условием, из RecordSet, на лист с ячейки'
ActiveSheet.Range("B12").CopyFromRecordset rs
'Закрываемся, очищаемся'
rs.Close
cn.Close
Set cn = Nothing
Set rs = Nothing
    
End Sub
[/vba]

Опыта в VBA немного, учусь на ходу, на конкретной задаче-так что просьба отнестись с пониманием и сильно не пинать... :)

Автор - alexban65
Дата добавления - 09.09.2018 в 01:01
krosav4ig Дата: Воскресенье, 09.09.2018, 02:47 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1647
Репутация: 687 ±
Замечаний: 0% ±

Excel 2007,2010,2013
alexban65, поправьте тег, вы использовали тег формулы вместо тега VBA
Цитата
"SELECT * FROM Itog WHERE id1 LIKE '" & UserForm.ComboBox2.Text & "' AND [тут чего-то пропущено] IS NOT NULL ORDER BY 1"


(_)Õvõ(_)

Сообщение отредактировал krosav4ig - Воскресенье, 09.09.2018, 02:47
 
Ответить
Сообщениеalexban65, поправьте тег, вы использовали тег формулы вместо тега VBA
Цитата
"SELECT * FROM Itog WHERE id1 LIKE '" & UserForm.ComboBox2.Text & "' AND [тут чего-то пропущено] IS NOT NULL ORDER BY 1"

Автор - krosav4ig
Дата добавления - 09.09.2018 в 02:47
alexban65 Дата: Воскресенье, 09.09.2018, 11:46 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
alexban65, поправьте тег, вы использовали тег формулы вместо тега VBA
Цитата
"SELECT * FROM Itog WHERE id1 LIKE '" & UserForm.ComboBox2.Text & "' AND [тут чего-то пропущено] IS NOT NULL ORDER BY 1"


Ошибка исчезла, спасибо.
Но отобранные данные из recordset на лист не выводятся.
Может, как то по другому,отдельно, это реализуется?


Сообщение отредактировал alexban65 - Воскресенье, 09.09.2018, 11:57
 
Ответить
Сообщение
alexban65, поправьте тег, вы использовали тег формулы вместо тега VBA
Цитата
"SELECT * FROM Itog WHERE id1 LIKE '" & UserForm.ComboBox2.Text & "' AND [тут чего-то пропущено] IS NOT NULL ORDER BY 1"


Ошибка исчезла, спасибо.
Но отобранные данные из recordset на лист не выводятся.
Может, как то по другому,отдельно, это реализуется?

Автор - alexban65
Дата добавления - 09.09.2018 в 11:46
boa Дата: Понедельник, 10.09.2018, 10:49 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 143
Репутация: 20 ±
Замечаний: 0% ±

2013, 365
Но отобранные данные из recordset на лист не выводятся.

потому, что вы "исчерпали" свой рекордсет
поменяйте действия

[vba]
Код
'Копирует полученные данные селекта с условием, из RecordSet, на лист с ячейки'
ActiveSheet.Range("B12").CopyFromRecordset rs
'Заполнение RecordSet -  работает цикл, пока не кончится рекордсет'
Do While Not rs.EOF
        ComboBox2.AddItem rs.Fields(0) 'комбобокс заполняется значениями из поля id1(можно через массив\цикл?)'
        rs.MoveNext
Loop
[/vba]




Сообщение отредактировал boa - Понедельник, 10.09.2018, 10:50
 
Ответить
Сообщение
Но отобранные данные из recordset на лист не выводятся.

потому, что вы "исчерпали" свой рекордсет
поменяйте действия

[vba]
Код
'Копирует полученные данные селекта с условием, из RecordSet, на лист с ячейки'
ActiveSheet.Range("B12").CopyFromRecordset rs
'Заполнение RecordSet -  работает цикл, пока не кончится рекордсет'
Do While Not rs.EOF
        ComboBox2.AddItem rs.Fields(0) 'комбобокс заполняется значениями из поля id1(можно через массив\цикл?)'
        rs.MoveNext
Loop
[/vba]

Автор - boa
Дата добавления - 10.09.2018 в 10:49
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Передача данных из combobox в запрос, в условие WHERE (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!