Here's what I think you are looking for, one at a time.
First, if you want to have a dynamic source (pulling from a table or query) but you want to have an "all" choice, try using an option group, 1 button "all", one button "Individual" with a combo box of choices.
Or you can dynamically fill the combo box with the additem
method of the combo box. This is a lot cooler.
Example: lstPlan is a combo or list box.
Dim i As Integer
Dim rs As Recordset
Dim db As Database
Dim sql As String
Set db = CurrentDb
sql = "SELECT tblPolicy.policyName FROM tblPolicy;"
Set rs = db.OpenRecordset("tblPolicy", dbOpenSnapshot)
lstPlan.RowSource = ""
lstPlan.AddItem Item:="All", Index:=0
lstPlan.Selected(0) = True
rs.MoveFirst
Do While Not rs.EOF
If Not IsNull(rs!policyName) Then
i = i + 1
lstPlan.AddItem Item:=rs!policyName, Index:=i
End If
rs.MoveNext
Loop
Second issue is dynamically building a query.
This beats the snot out any other way of pulling info from a table or query (a Union query can be used as a source, it combines two tables, like "tblInvoices union tblInvoices_old"

.
Three examples show how to use a date, string or number:
dim sql as string
sql = "SELECT tbldealer.* FROM tbldealer"
if not isnull(me.textDate) then
sql = sql & " WHERE tblDealer.signedUpDate < " & "#" & Me.txtDate & & "#" '"#" is for dates
end if
if not comboDealerName = "All" then
sql = sql & " AND tblDealer = " & "'" & Me.comboDealerName & "'" ' "'" is for text
end if
if not isnull(me.textTotalSales) then
sql = sql & " AND tblDealer.totalSales < " cdbl(me.textTotalSales) 'no signs for numbers
end if
'last but not least the sql closing:
sql = sql & ";"
now the string should look like:
sql = "SELECT tbldealer.* FROM tbldealer WHERE tblDealer.signedUpDate < #11/31/03# AND tblDealer = 'Joes Warehouse' tblDealer.totalSales < 4000 ;"
the string is good for a combo or list box rowsource,
or a record source for a form or a report.
like maybe after this you might write:
DoCmd.OpenReport "rptSalesReportDealer", acViewPreview, , sql
I hope this helps!
-Jerry