Не получается передать данные из 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 немного, учусь на ходу, на конкретной задаче-так что просьба отнестись с пониманием и сильно не пинать...
Приветствую уважаемых форумчан!
Не получается передать данные из 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
alexban65, поправьте тег, вы использовали тег формулы вместо тега VBA Цитата "SELECT * FROM Itog WHERE id1 LIKE '" & UserForm.ComboBox2.Text & "' AND [тут чего-то пропущено] IS NOT NULL ORDER BY 1"
Ошибка исчезла, спасибо. Но отобранные данные из recordset на лист не выводятся. Может, как то по другому,отдельно, это реализуется?
alexban65, поправьте тег, вы использовали тег формулы вместо тега VBA Цитата "SELECT * FROM Itog WHERE id1 LIKE '" & UserForm.ComboBox2.Text & "' AND [тут чего-то пропущено] IS NOT NULL ORDER BY 1"
Ошибка исчезла, спасибо. Но отобранные данные из recordset на лист не выводятся. Может, как то по другому,отдельно, это реализуется?alexban65
Сообщение отредактировал alexban65 - Воскресенье, 09.09.2018, 11:57
Но отобранные данные из recordset на лист не выводятся.
потому, что вы "исчерпали" свой рекордсет поменяйте действия
[vba]
Код
'Копирует полученные данные селекта с условием, из RecordSet, на лист с ячейки' ActiveSheet.Range("B12").CopyFromRecordset rs 'Заполнение RecordSet - работает цикл, пока не кончится рекордсет' Do While Not rs.EOF ComboBox2.AddItem rs.Fields(0) 'комбобокс заполняется значениями из поля id1(можно через массив\цикл?)' rs.MoveNext Loop
Но отобранные данные из recordset на лист не выводятся.
потому, что вы "исчерпали" свой рекордсет поменяйте действия
[vba]
Код
'Копирует полученные данные селекта с условием, из RecordSet, на лист с ячейки' ActiveSheet.Range("B12").CopyFromRecordset rs 'Заполнение RecordSet - работает цикл, пока не кончится рекордсет' Do While Not rs.EOF ComboBox2.AddItem rs.Fields(0) 'комбобокс заполняется значениями из поля id1(можно через массив\цикл?)' rs.MoveNext Loop