views:

1302

answers:

1

Hey all!

I'm creating a 'master' report in SSRS 2008 that collaborates other reports about a person. Sometimes not all of the other reports are relevant and as such return nothing. I'd like to be able to exclude this from the master report so it does not leave a blank page.

I'm aware of the 'no-rows-message' feature, but a whole page with simply "Not applicable for this person" is hardly the best solution!

Essentially I'm looking for a way to determine if a subreport is 'empty' and use that in a visibility expression.

Any help is most appreciated

+2  A: 

OK, so I've got this figured now. The answer is to place the subreport into a rectangle. Then set the visibility of the rectangle to something like this:

=IIF(First(Fields![SOMEFEILD].Value, "[SOMEDATASET]") IS NOTHING, TRUE, FALSE)

Where [SOMEDATASET] is a dataset populated in the same way as the one populating the subreport. Then if the subreport is empty, then [SOMEDATASET] will also be empty, and more to the point, the field [SOMEFEILD] will be equal to NOTHING.

Bada-Bing! One report that is not cluttered with paper-wasting empty pages.

note: there is one bad side-effect to this approach, in that, the SQL server will be sending the same information twice, once to populate the subreport's dataset, and again to populate the duplicate dataset in the report. For me, this is acceptable, others may want to be aware of this.

Brian
Good job. (buffer to meet 15 char limit)
Jon
After musing over the problem during my lunch break, I've decided that returning the exact same data twice is *never* a good idea. I'm going to write a stored procedure that returns just the row count of the of the stored procedures used to populate the subreports. Then test to see if these counts are 0 or not and set the visibility of the appropriate subreports accordingly.
Brian