views:

164

answers:

1

I suspect the answer is no, but here goes..

I'm using the WebForms Report Viewer on a public-facing website to allow users to report on themselves or their users (if the user is an admin user).

A report has a parameter called Users where an admin can pick a user from the list and generate a report from it. Mundane users can also view this report, but I programmatically create a linked report for each user and set the UserID value to their ID so they can only view themselves.

This works well except that the UserID parameter is query-based, and not every user is visible in the list using default settings (the user list is based off date range parameters can provide, and only users we consider 'active' during the date range are visible).

This is blowing up for mundane users that are not active for the default date range (which is the previous month).

I suspect the flow of execution is something like this:

  1. Report loads with default parameters
  2. The linked report rules are now applied and the value of the UserID is overridden with the ID in the linked report
  3. UserID field is now hidden to prevent the user from changing it
  4. SSRS can't find the UserID default value in the query results (that I didn't even want it to run) so it displays an error The 'UserID' parameter is missing a value

Through some testing I've found a perfect correlation between users not inside the default date range and users who can't view the report.

Can anyone suggest a way to make the report usable for those users that aren't in the default list? The reports are created programmatically so I do have a fair bit of control over the situation.

I would love to simply be able to mark a parameter in a linked report as no longer being query-based, but those properties are all read-only. I really, really don't want to have to create duplicate reports to accommodate these users but I'm at a bit of a loss right now.

Any suggestions are greatly appreciated!

A: 

Can't you just mark the param as 'nullable' then pass null in from the linked report ( you may have to alter the back end to cope with this?

Alternatively add an extra row to the 'users' day something like -1 "unknown user" then you can just watch for -1 and handle accordingly

adolf garlic