Необходима помощь. Имеется база данных с 4 полями. В Excel при запуске кода данные фильтруются по одному из полей и загружаются на форму в свой ListBox для каждого поля. Задача: как отфильтровать данные по двум полям. Для одного поля следующий код:
Sub ADO_Demo6()
Dim DBFullName As String
Dim Cnct As String, Src As String
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
Dim Col As Integer
Dim z As String
z = UserForm5.TextBox1.Text 'значение которое необходимо найти в поле профессия
If z = "" Then Exit Sub
' Информация о базе данных
DBFullName = ThisWorkbook.Path & "\Доплаты.mdb"' путь к базе данных
' Открытие соединения
Set Connection = New ADODB.Connection
Cnct = "Provider=Microsoft.Jet.OLEDB.4.0; "
Cnct = Cnct & "Data Source=" & DBFullName & ";"
Connection.Open ConnectionString:=Cnct
' Создание объекта RecordSet
Set Recordset = New ADODB.Recordset
With Recordset
' Фильтр
' КАК ТО ВОЗМОЖНО ЗАДАТЬ ФИЛЬТР ПО ДВУМ ПОЛЯМ ПРОФЕССИЯ И Z И ЕЩЕ ОТРАСЛЬ И ЗНАЧЕНИЕ???
Src = "SELECT * FROM Отпуск WHERE Профессия Like '%" + z + "%'" 'таблица ОТПУСК в поле Профессия ищем совпадение с введенным значением пользователя
On Error Resume Next
.Open Source:=Src, ActiveConnection:=Connection, CursorType:=adOpenStatic
End With
Do Until Recordset.EOF
X = Recordset.Fields(Col)
With UserForm5.ListBox2
.AddItem Recordset.Fields("Профессия").Value 'отфильтрованные значения из поля ПРОФЕССИЯ заносятся в ListBox
End With
With UserForm5.ListBox5
.AddItem Recordset.Fields("Отрасль").Value'отфильтрованные значения по полю ПРОФЕССИЯ из поля ОТРАСЛЬ заносятся в ListBox
End With
Recordset.MoveNext
Loop
Set Recordset = Nothing
Connection.Close
Set Connection = Nothing
End Sub
Sub ADO_Demo6()
Dim DBFullName As String
Dim Cnct As String, Src As String
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
Dim Col As Integer
Dim z As String
z = UserForm5.TextBox1.Text 'значение которое необходимо найти в поле профессия
If z = "" Then Exit Sub
' Информация о базе данных
DBFullName = ThisWorkbook.Path & "\Доплаты.mdb"' путь к базе данных
' Открытие соединения
Set Connection = New ADODB.Connection
Cnct = "Provider=Microsoft.Jet.OLEDB.4.0; "
Cnct = Cnct & "Data Source=" & DBFullName & ";"
Connection.Open ConnectionString:=Cnct
' Создание объекта RecordSet
Set Recordset = New ADODB.Recordset
With Recordset
' Фильтр
' КАК ТО ВОЗМОЖНО ЗАДАТЬ ФИЛЬТР ПО ДВУМ ПОЛЯМ ПРОФЕССИЯ И Z И ЕЩЕ ОТРАСЛЬ И ЗНАЧЕНИЕ???
Src = "SELECT * FROM Отпуск WHERE Профессия Like '%" + z + "%'" 'таблица ОТПУСК в поле Профессия ищем совпадение с введенным значением пользователя
On Error Resume Next
.Open Source:=Src, ActiveConnection:=Connection, CursorType:=adOpenStatic
End With
Do Until Recordset.EOF
X = Recordset.Fields(Col)
With UserForm5.ListBox2
.AddItem Recordset.Fields("Профессия").Value 'отфильтрованные значения из поля ПРОФЕССИЯ заносятся в ListBox
End With
With UserForm5.ListBox5
.AddItem Recordset.Fields("Отрасль").Value'отфильтрованные значения по полю ПРОФЕССИЯ из поля ОТРАСЛЬ заносятся в ListBox
End With
Recordset.MoveNext
Loop
Set Recordset = Nothing
Connection.Close
Set Connection = Nothing
End Sub
Fox