如何进行多重选择下拉列表并在MS Access 2016中搜索子表单

问题描述 投票:0回答:1

所以我有一个多选下拉列表。我想在子表单中过滤搜索条件。在我的父母表格上,我有一个名为[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

我现在使用的我的代码仅适用于单个选择。

ms-access access-vba access
1个回答
0
投票

类似这样的东西:

strTicketStatus = "[Status of Ticket] = "
For i = 0 to Me.cboTicketStatus.ListCount - 1
    if Me.cboTicketStatus.Selected(i) = True then
        selectedStatus = Me.cboTicketStatus.ItemData(i) 
        strTicketStatus = strTicketStatus  & iif(i > 0, " OR ", "") & "'" & selectdStatus & "'"
    End If
Next i
© www.soinside.com 2019 - 2024. All rights reserved.