我已经完成了一个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";
现在我如何以编程方式将数据源设置为报告?
答案 0 :(得分:3)
这项工作是不可能的。您应该在rdl报告中创建数据源。您必须为报告数据收集编写所需的查询。您可以将此查询用作文本或存储过程。您可以将参数传递给此查询并过滤查询的输出。 你只能将参数传递给rdl报告,如下所示:
ReportParameter[] Params = new ReportParameter[1];
Params[0] = "Parameter Value";
ReportViewerControl.ServerReport.SetParameters(Params);
答案 1 :(得分:0)
你想做什么?我相信.RDL文件本身提到了数据源。 例如:使用BIDS创建报表时,可以指定数据源。这将添加到.RDL文件中。同样的概念在这里也适用。
答案 2 :(得分:0)
这不是不可能的,但如果这是你想做的事,可能需要一点努力 你有几个选择:
如果在报表服务器上创建共享数据源,则可以使用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)
另一种选择是在服务器上使用内置共享(或报告级别)数据源的模板。