I think you would be much better off using the QueryDef technique, because it will handle as many "Inputs" as you like.
Here is an Example of using it with Multiple Multi-Selection List Boxes and Combos, unfortunately there is a lot of it as it is doing a lot of work.

[vba]Dim rs As Object, strsql As String, qdfNew As Object, var As Variant, tempquery As String
Dim sSELECT As String, sFROM As String, swhere As String, itemcount As Integer, dbs As Object
On Error GoTo errorcatch
swhere = " WHERE not isnull([Candidates ID])"
If Not IsNull(Me.Combo3) Then
swhere = swhere & " AND [Nationality] = " & Me.Combo3
End If
If Not IsNull(Me.Combo5) Then
swhere = swhere & " AND [MotherTongue] = " & Me.Combo5
End If
If Not IsNull(Me.Combo19) Then
swhere = swhere & " AND [AcademicLevel] = " & Me.Combo19
End If
If Not IsNull(Me.cboMilitaryAreaInvolved) Then
swhere = swhere & " AND [WhatMilitaryareaInvolvedin] = " & Me.cboMilitaryAreaInvolved
End If
If Not IsNull(Me.cboCountryServed) Then
swhere = swhere & " AND [CountryServedUnder?] = " & Me.cboCountryServed
End If
If Not IsNull(Me.cboPoliceRank) Then
swhere = swhere & " AND [PoliceRank] = " & Me.cboPoliceRank
End If

If Me.lstSpokenLang.ItemsSelected.Count > 0 Then
itemcount = 0
For Each var In Me.lstSpokenLang.ItemsSelected
swhere = swhere & " AND [Candidates ID] IN (SELECT [Candidates ID] FROM tblCandidatesSpokenLanguages WHERE SpokenLanguagesID = " & Me.lstSpokenLang.ItemData(var) & " )"
Next var
End If
If Me.lstWrittenLang.ItemsSelected.Count > 0 Then
For Each var In Me.lstWrittenLang.ItemsSelected
swhere = swhere & " AND [Candidates ID] IN (SELECT [Candidates ID] FROM tblCandidatesWrittenLanguages WHERE WrittenLanguagesID = " & Me.lstWrittenLang.ItemData(var) & " )"
Next var
End If
If Me.lstProfessionalExpSearch.ItemsSelected.Count > 0 Then
itemcount = 0
For Each var In Me.lstProfessionalExpSearch.ItemsSelected
swhere = swhere & " AND [Candidates ID] IN (SELECT [Candidates ID] FROM tblCandidatesProfessionalExp WHERE ProfessionalExpID = " & Me.lstProfessionalExpSearch.ItemData(var) & " )"
Next var
End If
If Me.lstRegions.ItemsSelected.Count > 0 Then
itemcount = 0
For Each var In Me.lstRegions.ItemsSelected
swhere = swhere & " AND [Candidates ID] IN (SELECT [Candidates ID] FROM tblCandidatesRegionsAndCultures WHERE RegionsandCulturesexperiencedinID = " & Me.lstRegions.ItemData(var) & " )"
Next var
End If
If Me.lstIndustrialSector.ItemsSelected.Count > 0 Then
itemcount = 0
For Each var In Me.lstIndustrialSector.ItemsSelected
swhere = swhere & " AND [Candidates ID] IN (SELECT [Candidates ID] FROM tblCandidatesIndustrialSectors WHERE IndustrialSectorID = " & Me.lstIndustrialSector.ItemData(var) & " )"
Next var
End If
If Me.lstProfessionalQual.ItemsSelected.Count > 0 Then
itemcount = 0
For Each var In Me.lstProfessionalQual.ItemsSelected
swhere = swhere & " AND [Candidates ID] IN (SELECT [Candidates ID] FROM tblCandidatesProfessionalQualifications WHERE ProfessionalQualificationsID = " & Me.lstProfessionalQual.ItemData(var) & " )"
Next var
End If
If Me.lstArmyCorpService.ItemsSelected.Count > 0 Then
itemcount = 0
For Each var In Me.lstArmyCorpService.ItemsSelected
swhere = swhere & " AND [Candidates ID] IN (SELECT [Candidates ID] FROM tblCandidatesCorpService WHERE CorpServiceID = " & Me.lstArmyCorpService.ItemData(var) & " )"
Next var
End If
If Me.lstNavyBackground.ItemsSelected.Count > 0 Then
itemcount = 0
For Each var In Me.lstNavyBackground.ItemsSelected
swhere = swhere & " AND [Candidates ID] IN (SELECT [Candidates ID] FROM tblCandidatesNavyBackground WHERE NavyBackgroundID = " & Me.lstNavyBackground.ItemData(var) & " )"
Next var
End If
If Me.lstAirForceBackground.ItemsSelected.Count > 0 Then
itemcount = 0
For Each var In Me.lstAirForceBackground.ItemsSelected
swhere = swhere & " AND [Candidates ID] IN (SELECT [Candidates ID] FROM tblCandidatesAFBackground WHERE AirForceID = " & Me.lstAirForceBackground.ItemData(var) & " )"
Next var
End If
If Me.lstMilitaryQualifications.ItemsSelected.Count > 0 Then
itemcount = 0
For Each var In Me.lstMilitaryQualifications.ItemsSelected
swhere = swhere & " AND [Candidates ID] IN (SELECT [Candidates ID] FROM tblCandidatesMilitaryQualifications WHERE MilitaryQualificationsID = " & Me.lstMilitaryQualifications.ItemData(var) & " )"
Next var
End If
If Me.lstOtherExperience.ItemsSelected.Count > 0 Then
itemcount = 0
For Each var In Me.lstOtherExperience.ItemsSelected
swhere = swhere & " AND [Candidates ID] IN (SELECT [Candidates ID] FROM tblCandidatesOtherExp WHERE OtherExperienceID = " & Me.lstOtherExperience.ItemData(var) & " )"
Next var
End If
If Me.LstRegionsServiedIn.ItemsSelected.Count > 0 Then
itemcount = 0
For Each var In Me.LstRegionsServiedIn.ItemsSelected
swhere = swhere & " AND [Candidates ID] IN (SELECT [Candidates ID] FROM tblCandidatesRegionsServedIn WHERE RegionsServedID = " & Me.LstRegionsServiedIn.ItemData(var) & " )"
Next var
End If

strsql = "SELECT [Candidates ID], [Full Name] " & _
"FROM tblCandidatesDetails " & swhere & ";"
Set dbs = Application.CurrentData
tempquery = "no"
For Each obj In dbs.AllQueries
If obj.Name = "Search Query" Then
tempquery = "yes"
End If
Next obj
If tempquery = "yes" Then
DoCmd.DeleteObject acQuery, "Search Query"
End If
With CurrentDb
Set qdfNew = .CreateQueryDef("Search Query", strsql)
End With
DoCmd.OpenForm "frmCriteriaResults"
Exit Sub
errorcatch:
MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description[/vba]

There is also a "Form Filter" version that filters the form or subform that you are using to search.

[VBA]
Multi List Boxes for Searching
Public Sub createFilter()
Dim strType As String
Dim strCritical As String
Dim strScope As String
Dim strRRB1 As String
Dim strRRB2 As String
Dim strArea As String
Dim strKPP
Dim strFilter As String
Dim itm As Variant

'Filter by Type
For Each itm In Me.lstFilterByType.ItemsSelected
If strType = "" Then
strType = "strRequirementType_Threshold_Objective = '" & Me.lstFilterByType.ItemData(itm) & "'"
Else
strType = strType & " OR strRequirementType_Threshold_Objective = '" & Me.lstFilterByType.ItemData(itm) & "'"
End If
Next itm
If Not strType = "" Then
strType = " (" & strType & ") AND "
End If

'Filter by Critical
For Each itm In Me.lstFilterByCritical.ItemsSelected
If strCritical = "" Then
strCritical = "blnCriticalRequirement = " & Me.lstFilterByCritical.ItemData(itm)
Else
strCritical = strCritical & " OR blnCriticalRequirement = " & Me.lstFilterByCritical.ItemData(itm)
End If
Next itm
If Not strCritical = "" Then
strCritical = "(" & strCritical & ") AND "
End If

'Filter by scope
For Each itm In Me.lstFilterByScope.ItemsSelected
If strScope = "" Then
strScope = "inScope = " & Me.lstFilterByScope.ItemData(itm)
Else
strScope = strScope & " OR inScope = " & Me.lstFilterByScope.ItemData(itm)
End If
Next itm
If Not strScope = "" Then
strScope = " (" & strScope & ") AND "
End If

'Filter by RRB1 resolution
For Each itm In Me.lstRRB1.ItemsSelected
If strRRB1 = "" Then
strRRB1 = "strResults = '" & Me.lstRRB1.ItemData(itm) & "'"
Else
strRRB1 = strRRB1 & " OR strResults = '" & Me.lstRRB1.ItemData(itm) & "'"
End If
Next itm
If Not strRRB1 = "" Then
strRRB1 = " (" & strRRB1 & ") AND "
End If

'Filter by RRB2 Resolution
For Each itm In Me.lstRRB2.ItemsSelected
If strRRB2 = "" Then
strRRB2 = "strRRB2Results = '" & Me.lstRRB2.ItemData(itm) & "'"
Else
strRRB2 = strRRB2 & " OR strRRB2Results = '" & Me.lstRRB2.ItemData(itm) & "'"
End If
Next itm
If Not strRRB2 = "" Then
strRRB2 = " (" & strRRB2 & ") AND "
End If

'Filter by KPP
For Each itm In Me.lstFilterByKPP.ItemsSelected
If strKPP = "" Then
strKPP = "isKPP = " & Me.lstFilterByKPP.ItemData(itm)
Else
strKPP = strKPP & " OR isKPP = " & Me.lstFilterByKPP.ItemData(itm)
End If
Next itm
If Not strKPP = "" Then
strKPP = "(" & strKPP & ") AND "
End If

'Filter by Area
For Each itm In Me.lstFilterByArea.ItemsSelected
If strArea = "" Then
strArea = "strFunctionalArea = '" & Me.lstFilterByArea.ItemData(itm) & "'"
Else
strArea = strArea & " OR strFunctionalArea = '" & Me.lstFilterByArea.ItemData(itm) & "'"
End If
Next itm
If Not strArea = "" Then
strArea = " (" & strArea & ") AND "
End If

strFilter = strType & strCritical & strScope & strRRB1 & strRRB2 & strKPP & strArea
If Not strFilter = "" Then
strFilter = Left(strFilter, Len(strFilter) - 5)
End If
'Debug.Print strFilter


Me.FilterOn = False
Me.Filter = ""
Me.Filter = strFilter
Me.FilterOn = True
If Me.Recordset.RecordCount = 0 Then
Me.FilterOn = False
MsgBox "No Records"
End If
[/VBA]