I've worked on something similar to this for viewing Crystal Reports.
My boss wanted a web app that allowed him to upload a report, specify the parameters, and limit access to certain approved roles. I developed an app that has Report, ReportParameter, ReportRole, and ReportFrequency tables. Each Report has a list of parameters related to it that can be changed by the user uploading/editing the report. They can specify whether it's a static value (such as Location='Canada'), or a dynamic value (Date=Today, UserID=LoggedInUser). They can also set a Frequency to the report on a per-role basis (IE: Daily, Weekly, etc). This allowed me to pass all the required parameters in the QueryString to a single report page that can display any uploaded report.
The end result is an app that allows an administrator to upload a report, specify parameters, roles, and report frequency per role, and activate it for the end user to see. All the end user needs to do is log into the app and see a list of all reports associated with them, categorized by Daily/Weekly/Monthly. I also captured the last time the report was viewed by them. this allows me to sort each category by the most overdue reports.
Mind you, this was a ton of customized code.