What I often do is have one query that never changes (your saved query). Then have a second query which is an empty bucket, and it has an IN() statement for your criteria. Then I code to loop through a listbox (I would recommend this instead of a combobox - it's also easy to put a checkbox right below the listbox and code it to where a user checks it, all items in listbox are selected or de-selected - label the checkbox Check/Clear All) and see which items are selected. Declare a string variable and assign to it the .Sql property of the querydef object that represents the saved query that never changes. Use the Replace() function to replace the dummy parameter values in the SQL with your In items from the listbox looping code. Then assign that final sql to the empty bucket query, then run that.
If nothing is selected, then replace the entire where statement of your sql string with nothing.
Here is an example code snippet, HTH:
aircode as best as I can recall the way I use it, don't have real life snippet on hand at the moment
Code:
dim strSQL as string
dim strIN as string
dim myVar as Variant
If me.listbox1.itemsselected.count=0 then
strIn=""
else
For each myVar in me.listbox1.itemsselected
strIn="'" & me.listbox1.itemdata(myVar) & "',"
Next myVar
End if
if right(strIn,1)="," then strIn=left(strIn,len(strIn)-1)
strSQL=CurrentDB.Querydefs("saved query name").sql
strSQL=Replace(strSQL,"Where [fieldname] In ('dummyvalue')",strIN)
currentDb.Querydefs("bucket query name").sql=strsql
'now do whatever you want with the query bucket