以编程方式将数据源绑定到报表服务器中的rdl - SSRS

时间:2010-03-02 04:57:04

标签: c# asp.net sql-server reporting-services

我已经完成了一个asp.net应用程序来生成特定数据的报告。最初我创建了本地报告(.rdlc)来生成报告。我为每个rdlc创建了单独的.xsd并设计了报告。我以编程方式构建数据集并将其绑定到rdlc。我使用以下代码将数据源绑定到报告 -

rptMyReport.LocalReport.ReportPath = Server.MapPath(srdlcName);
rptMyReport.LocalReport.DataSources.Add(rds);

现在我已将所有rdlc转换为this msdn article之后的rdl,并且我已将报告发布到报告服务器。

rptMyReport.ServerReport.ReportServerUrl = new System.Uri("http://ReportServer/ReportServer");
rptMyReport.ServerReport.ReportPath = "/ReportFolder/ReportName";

现在我如何以编程方式将数据源设置为报告?

3 个答案:

答案 0 :(得分:3)

这项工作是不可能的。您应该在rdl报告中创建数据源。您必须为报告数据收集编写所需的查询。您可以将此查询用作文本或存储过程。您可以将参数传递给此查询并过滤查询的输出。 你只能将参数传递给rdl报告,如下所示:

ReportParameter[] Params = new ReportParameter[1];
Params[0] = "Parameter Value";
ReportViewerControl.ServerReport.SetParameters(Params);

答案 1 :(得分:0)

你想做什么?我相信.RDL文件本身提到了数据源。 例如:使用BIDS创建报表时,可以指定数据源。这将添加到.RDL文件中。同样的概念在这里也适用。

答案 2 :(得分:0)

这不是不可能的,但如果这是你想做的事,可能需要一点努力 你有几个选择:

  1. 如果在报表服务器上创建共享数据源,则可以使用RDLObjectModel手动添加它。从报表服务器获取共享数据源名称和guid,然后将其添加到报表中。

    示例:

    'create the datasource for the report
    Dim dataSrcRFoo = New RdlObjectModel.DataSource
    dataSrcRFoo.Name = "DataSourceName"
    dataSrcRFoo.DataSourceReference = "/path/to/DataSource"
    dataSrcRFoo.IsShared = True
    dataSrcRFoo.SecurityType = 2 ' RdlObjectModel.SecurityTypeEnum.DataBase   
    dataSrcRFoo.DataSourceID = New Guid("shareddatasourceguid")
    
    'add data source to report
    rdlRpt.DataSources.Add(dataSrcRFoo) 
    
  2. 另一种选择是在服务器上使用内置共享(或报告级别)数据源的模板。