I often use queries based on information in forms.
For example, if I want to find all orders for a particular state between two dates, the user would fill in the appropriate information on the form. (probably using a combo box to select the state so spelling won't be an issue). Lets say the names of these text boxes are State, StartDate, & EndDate and the form is called StateSalesForm.
When I set up the query in the design view grid, I set up the criteria based on what is on the form. So the criteria for state field would be [forms]![StateSalesForm]![State]. The criteria for the Date field would be Between [forms]![StateSalesForm]![StartDate] AND [forms]![StateSalesForm]![EndDate].
On the form, after the user fills out the form, have him click a button that runs an event procedure that will check to make sure the form is all filled in, check to see if the end date is really after the start date, then run the query, and call up the report.
Hope this helps a little.