我正在编写一个类似于Microsoft Report Builder的报表生成器程序,但要在现有Web应用程序上托管。它应该能够:
基本上,它是一个独立的专有报告生成工具。
用户无需报告编写者,但他们是否了解数据在数据库中的关联方式。 (表之间存在关系。)出于某种原因,他们不能或不应该访问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();
}