Yes.
Create a form and include entry fields for each field you want to search by. Do not bind these fields to any recordsource. If you use a combobox or listbox you can set the row source, but do not bind the fields.
In a query join all your tables based on their relationships.
Then, point the criteria for each field you want to search on to the correcponding field on your search form.
For example, if you named your seacrh form frmSearch and one of the fields you want to search by is named ItemNumber on the form.
Then, in the criteria under ItemNumber, it would look like this:
[Forms]![frmSearch]![ItemNumber].value
If you wanted to take it a step further, and allow null search fields on the search form you need the "like" along with the "*" wildcard.
For example:
Like iif([Forms]![frmSearch]![ItemNumber].value is null,"*",[Forms]![frmSearch]![ItemNumber].value)
The * will cause the query to ignore the parameter criteria of that field and treat it as if there were no parameter criteria on that field.
Save the query.
Now, on your search form, you need a button (or other method) to execute the query and get your search results. You can a form or report, and set its recordsource to the query, or you can simply open the query itself.
The command to open a form is:
DoCmd.OpenForm "YourForm"
a report:
DoCmd.OpenReport "YourReport"
a query:
DoCmd.OpenQuery "YourQuery"
Hope this helps you.