多个组合框过滤列表框(已重新访问?)

时间:2019-04-09 15:06:17

标签: sql ms-access filter

我正在尝试基于多个组合框来过滤列表框。看起来很容易,对不对?实际上,我几乎找到了解决问题的确切答案,但是我似乎无法使其正常工作。 (请参阅:Multiple Combo Boxes to filter a listbox

使用上面解决方案中的代码(显然是出于我的目的而修改)似乎并不想专门过滤掉任何内容。相反,它不会在查询中找到任何与过滤条件完全匹配的记录。

我有五个组合框,它们从查询(qryCustomerWants)中获取唯一值,并根据查询中的相应列填充五个组合框。当我单击组合框之一时,列表框将更新,并应根据在组合框中选择的搜索条件过滤结果。

Private Sub RequerylstCustomers()
   Dim SQL As String
   SQL = "SELECT qryCustomerWants.ID, qryCustomerWants.Type, qryCustomerWants.Make, qryCustomerWants.Model, qryCustomerWants.YearWanted, qryCustomerWants.Condition " _
    & "FROM qryCustomerWants " _
    & "WHERE 1=1 "
    If cboType.Value & "" <> "" Then
        SQL = SQL & " AND qryCustomerWants.Type = '" & cboType.Value & "'"
    End If
    If cboMake.Value & "" <> "" Then
        SQL = SQL & " AND qryCustomerWants.Make = '" & cboMake.Value & "'"
    End If
    If cboModel.Value & "" <> "" Then
        SQL = SQL & " AND qryCustomerWants.Model = '" & cboModel.Value & "'"
    End If
    If cboYear.Value & "" <> "" Then
        SQL = SQL & " AND qryCustomerWants.Year = '" & cboYear.Value & "'"
    End If
    If cboCondition.Value & "" <> "" Then
        SQL = SQL & " AND qryCustomerWants.Condition = '" & cboCondition.Value & "'"
    End If
    SQL = SQL & " ORDER BY qryContactWants.Last"
    Me.lstCustomers.RowSource = SQL
    Me.lstCustomers.Requery
End Sub

我使用以下函数调用函数:

Private Sub cboType_AfterUpdate()
    RequerylstCustomers
End Sub

当前,每次我从组合框(其中的任何一个)中选择一个项目时,都会清除整个列表框。我知道有一些与搜索参数匹配的记录,因此应该将这些记录过滤到一个较小的列表中,以便我从每个组合框中选择一个条目。

我在哪里弄糟呢?谢谢!

1 个答案:

答案 0 :(得分:1)

我现在看到您的Order By使用qryContactWants而不是qryCustomerWants

我想这就是您遇到问题的原因。