Q: I have a report that’s hosted on SQL Server 2005
Reporting Services (SSRS). This report is stored locally
on field agents’ laptops in a SQL Server Compact Edition
database that is synchronized with the home-office
database when the agents have connectivity. How can the
field agents print the report while on the road?
A: Visual Studio 2008’s Microsoft ReportViewer can
extract a report from any datasource (e.g., a flat file, a
Microsoft Excel spreadsheet, a full-blown SQL Server
database management system—DBMS); any datasource
with an ODBC, OLE DB, or .NET Data Provider; or
any object with an IBindingList interface. ReportViewer
uses a local report processor to parse the report definition
file just like SSRS, but it doesn’t handle the data
fetching operations; it assumes you’ve already done that.
This means you can add your SSRS Report Definition
Language (RDL) report to a Visual Studio 2005 project
(not Visual Studio 2008, until SQL Server 2008 ships)
and reset the datasources. Then your code must open
the connection, run the query, produce an ADO.NET
DataTable (or any IBindingList-enabled structure), and
point the LocalReport class to it. For more information,
see my book “Hitchhiker’s Guide to Visual Studio and
SQL Server” (hitchhikerguides.net/default.aspx).
—William Vaughn