Very doable. Of course a plain query does the same thing.
Create an unbound form. Name it something easy...maybe frmSearch or
something. Place as many text/combo boxes that you want to use for criteria
on the form. All of these are also unbound. Name them something easy
too...txtLastName.
Create a query based on the table/query that feeds the form that you're
interested in. Under all of the fields that you have search fields on the
search form, write criteria in the query design similar to:
=Forms![MySearchFormName]![MySearchFieldName] Or
Forms![MySearchFormName]![MySearchFieldName] Is Null
Save the query....qrySearch or something.
On the search form, create a command button. In the On Click event enter the
code:
DoCmd.OpenForm "MyFormName", acNormal, "MyQueryName"
The form will open filtered with the selections chosen.
Another DIRECT approach would be to use Filter By Form. You can use this on
any form that you create. Go to "Records" - "Filter" - "Filter By Form". This
allows the user to apply criteria to any control on the form and have the
form return corresponding records.