Итак, у меня есть выпадающий список. Я хотел бы отфильтровать критерии поиска в подчиненной форме. В моей родительской форме у меня есть поле со списком [cboTicketStatus]. моя подчиненная форма [SubHelpdeskTickets] и исходный объект [sfrm_Helpdesk_Ticket_Filter_Search]. В моем поле со списком [cboTicketStatus] у меня есть несколько элементов для выбора: Открыть, Закрыто, Работа в процессе, Удержание, Требуется утверждение, Утверждено. Я хотел бы иметь возможность выбрать несколько элементов, а затем фильтр подчиненной формы по элементам, выбранным в [cboTicketStatus]. Затем, если не выбрано ни одного элемента, я бы хотел показать все элементы из таблицы [tbl_Helpdesk_Ticket_Tracker]. Я не уверен, как написать код для изменения источника записи, чтобы сделать это.
Function SearchCriteria()
Dim strDepartment As String
Dim strTicketNumber As String
Dim strTicketStatus As String
Dim strStartDate As String
Dim strEndDate As String
Dim task As String
Dim strCriteria As String
If IsNull(Me.cboDepartments) Then
strDepartment = "[Comptroller Department] like '*'"
Else
strDepartment = "[Comptroller Department] = '" & Me.cboDepartments.Column(1) & "'"
End If
If IsNull(Me.cboTicketNumber) Then
strTicketNumber = "[Helpdesk Ticket Number] like '*'"
Else
strTicketNumber = "[Helpdesk Ticket Number] = '" & Me.cboTicketNumber.Column(1) & "'"
End If
If IsNull(Me.cboTicketStatus) Then
strTicketStatus = "[Status of Ticket] like '*'"
Else
strTicketStatus = "[Status of Ticket] = '" & Me.cboTicketStatus.Column(1) & "'"
End If
If IsNull(Me.txtStartDate) Then
strStartDate = "[Date Opened] like '*'"
Else
strStartDate = "([Date Opened] >= #" & Me.txtStartDate & "#)"
End If
If IsNull(Me.txtEndDate) Then
strEndDate = "[Date Opened] like '*'"
Else
strEndDate = "([Date Opened] <= #" & Me.txtEndDate & "#)"
End If
strCriteria = strDepartment & "And" & strTicketNumber & "And" & strStartDate & "And" & strEndDate & "And" & strTicketStatus
task = "Select * from tbl_Helpdesk_Ticket_Tracker where " & strCriteria
Me.SubHelpdeskTickets.Form.RecordSource = task
Me.SubHelpdeskTickets.Form.Requery
End Function
Мой код, который я сейчас использую, работает только с одним выбором.
обновил код для того, что вы редактировали. Я получаю еще одну ошибку. Правильно ли я его собираю?
strTicketStatus = "[TicketStatus] like '*'"
Else
strTicketStatus = "[TicketStatus] = "
Dim i As Long
'Dim selectedStatus As String
Dim firstCondition As Boolean: firstCondition = True
For i = 0 To Me.cboTicketStatus.ListCount - 1
If Me.cboTicketStatus.Selected(i) = True Then
selectedStatus = Me.cboTicketStatus.ItemData(i)
strTicketStatus = strTicketStatus & IIf(Not firstCondition, " OR ", "") & _
"'" & selectedStatus & "'"
firstCondition = False
End If
Next i
End If```
[![First View of All tickets][1]][1]
[![after selecting an option in the dropdown][2]][2]
[![view after event is fired][3]][3]
[1]: https://i.stack.imgur.com/1vXqT.jpg
[2]: https://i.stack.imgur.com/i079f.jpg
[3]: https://i.stack.imgur.com/egUj8.jpg