【发布时间】:2020-01-10 20:14:21
【问题描述】:
所以我有一个多选下拉菜单。我想在子表单中过滤我的搜索条件。在我的父表单上,我有一个名为 [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
【问题讨论】: