The short answer: use
Globals!ReportFolder in the middle drillthrough reports to fully qualify the target ReportName in any Action.
The tech involved in this problem, although probably you know this if you reached this page: SSRS is a database reporting solution for Microsoft SQL Server—you can turn data into graphs! Mobi Reports Pro is an iOS application for view SSRS reports on your iPad or iPhone—you can see your graphs and check your reports on the go!
The long problem description and solution explanation:
Mobi Reports has some caveats and can be a bit ticklish with some SSRS features, though. The feature that caused me the most headaches is Drillthrough reports.
SSRS gives you several ways to keep from burying your report user: Drillthrough, Drilldown, Subreports, and Nested Data Regions. Drillthroughs are a simple way to allow the user to click on one element of one report and load another report—drilling through the first, hopefully down to a second that makes sense and expands on the part they clicked on. (See the SQL Server TechCenter article Drillthrough, Drilldown, Subreports, and Nested Data Regions (Report Builder 3.0 and SSRS) for full details.)
Mobi Reports supports Drillthroughs, as long as you keep all the reports in the same directory, or use SSRS Linked Reports to put a link to a remote report in the same directory as the base report. (See Mobi Weave Support Center’s Does Mobi Reports support Drill down and Drill through report navigation?)
So far so good. I found that you also had to pass all parameters all the time (you cannot omit some parameters some of the time from SSRS’s Actions properties), and passing
Nothing! in SSRS terms) as a parameter value seemed to cause problems too:
I have no clever workaround here. Just don’t omit any parameters, and don’t try to pass NULL values (pass
−99 or something else that won’t show up in real data, and add code on the Drillthrough report to turn it back into
The real problem happened when trying to launch a Top-Level Report, then drilling through to a remote 2nd-Level Report, and then drilling through again to a remote 3rd-Level report. Creating linked reports in every directory to all the remote reports won’t help; you’ll still see this:
The problem’s source is is the handling of those Linked Reports. Yes, the Linked Report is in the same directory as the base report. Mobi Reports will dutifully load it. But go back and load it in Report Manager on a desktop web browser again, and drill through there. Notice what happens in the Report Server Toolbar as each report loads. Even though you’re using Linked Reports, all in the same directory, Report Manager recognizes when you’ve gone afield. This is why Mobi Reports complains when you try to drill through a 2nd-level report into a 3rd-level report.
You can keep Report Manager and Mobi Reports from straying out of the base directory by giving a full path to each drillthrough report in the Action properties. At first I simply passed the base directory as a parameter all the way down the line, but there’s an easier way: the built-in global Globals!ReportFolder. Everywhere you want to set a drillthrough, follow these steps:
- Properties → Action
- Enable as an action: Go to report
- Specify a report: [ƒx]
- Set expression for: Action.Drillthrough.ReportName
= Globals!ReportFolder + "/LinkedReportName"
(replacing the “/LinkedReportName” with the name of your linked report, of course). That’s it! ReportManager will report that you never leave the starting directory, and Mobi Reports will happily load drillthrough after drillthrough.