2010-03-02 95 views
2

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

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

现在我已经转换所有RDLC到RDL以下this msdn article,我已经发布到报表服务器的报告。

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

现在我怎样才能以编程方式设置数据源的报告?

回答

3

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

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

谢谢。那样做了! – NLV 2010-03-02 05:58:29

0

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

+0

根据用户的选择我是。过滤来自表格的数据并将其分配给rdlc。那么我怎么能在rdl中做到这一点? – NLV 2010-03-02 05:30:47

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. 另一种选择是建立在有份额(或报表级别)的服务器的数据源上使用的模板

相关问题