在运行时连接到共享数据源

时间:2012-06-22 06:43:23

标签: c# asp.net reporting-services ssrs-2008 reportviewer

我正在编写一个类似于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"/>

基于prescribed format

在此之后我碰到了一堵砖墙:

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();
}

0 个答案:

没有答案