我正在编写一个类似于 Microsoft 的Report Builder但要托管在现有 Web 应用程序上的报表生成器程序。它应该能够:
- 连接到报表服务器(SSRS2008)和预配置的共享数据源;
- 让用户设计 RDLC;和,
- 无需 Visual Studio 即可动态生成报告。
基本上,它是一个独立的尽管是专有的报告生成工具。
用户不必是报告编写者,但他们是否了解数据库中数据的关联方式。(表之间存在现有关系。)出于某种原因,他们不能或不应访问 SSRS 站点以从那里构建报告(即使用 Microsoft 的 Report Builder 工具)。他们必须使用我正在创建的工具。
我已经完成了最后两颗子弹。第一个是给我的问题:我对此比较陌生,可能这不是微不足道的。如何在运行时连接到 SSRS2008 数据源?
在我的web.config
中,我向 connectionStrings 添加了一个条目,如下所示:
<add name="ReportingSDS" connectionString="Server=http://myReportingServer;datasource=http://myReportingServer/reportserver/models/myReportModel.smdl;Integrated Security=True"/>
这是基于规定的格式。
在此之后我遇到了一堵砖墙:
using (var conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["ReportingSDS"].ConnectionString))
{
conn.Open();
// what's next?
}
我得到的错误是:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)
我的目标是检索它DataSet
并将其插入此代码段:
using (var memRDLC = new MemoryStream(Encoding.ASCII.GetBytes(myRdlcXml)))
{
// Bind the rdl memory stream and data set to reportviewer
rptViewer.ProcessingMode = ProcessingMode.Local;
LocalReport r = rptViewer.LocalReport;
r.LoadReportDefinition(memRDLC);
foreach (DataTable dataTable in reportEngine.DataTables)
{
r.DataSources.Add(new ReportDataSource(
dataTable.TableName + "_Table", dataTable));
}
r.Refresh();
}