I posted this in a different question, but I'll put it here as well. It is a quick run down on what I had to do to achieve something similar.
At my company I had to put together our own
Report Builder.
We have about 30 or so Reporting
Service reports that our users can
access through the web or desktop
application. What we wanted to do was
give our users the ability to take any
given section within those reports and
create their own.
If there is a report we have built for
them but they don't want to see the
graph, they can create the same report
with out it. If they want to combine
parts from 4 different reports to make
one summary report they can drag those
sections around on our custom builder
and save it.
The report builder I had to put
together pulls down all the different
sub-reports they have chosen and reads
through the XML adding them to a
Report Builder Template XML file I
have created. I then have to aggregate
all the parameters so as to not ask
for them more than once (parameter
names do have to be unique across all
reports if you don't want them
aggregated). This new report XML is
deployed to the server and the users
can access them when ever they want.
I've also given them the ability to
create their own cover pages, headers,
and footers by dragging text boxes,
images, global variables (date ran,
created, ran by, page number, etc...
anywhere on a blank canvas. I then
convert all the items they've drug
around and resized on this canvas in
to another report XML file and deploy
it as a sub-report that they can add
to their custom reports.
Yes, this has taken quite a bit of
work, but our users love it. We're in
the process now of allowing them to
create a report with special groupings
so the report can be ran at different
levels.
So it is possible, but there is no
easy answer. =) I'd be glad to give
advice to anyone who asks, but a
direct copy of the code is probably a violation
of my contract, but I'll do what I can
outside of that.