I had much the same problem and solved it using views and forms in the following way:
create a template were, for example, the first part is a form with selection items like start date, end date (providing a date range), etc. Then, when the user POST's this form via a submit button, capture the selections in a view and hand the selections to a get_...() function defined on the target object (_module_get...()), that provides a list of items to display in the current form, just below the selection items. The template used is using a <form> statement for the selection items, and a trivial part for displaying the data. If that doesn't make sense, I could send you the source code I use.

