I usually have a query that refers to the open form for criteria underlying the report. For example, if you have a field in the form call [txtStartDate] and a field in the query called [Date] and you want to return all records in the report that are after the selected date, you'd enter >[Forms]![FORMNAME]![txtStartDate] in the criteria row of the query under the [Date] column. You then base your report on this query.
You'd then make a command button on the form that opens the report. The only little glitch is that opening the report directly without having the form open would cause cryptic prompt(s) to pop up that only the programmer would understand. Hope this helps.