使用数据集进行Microsoft报告

时间:2016-07-26 05:07:41

标签: c# c#-4.0 reporting-services reporting microsoft-reporting

当我们使用SSRS创建报告时,我们可以使用“数据集”窗口中的查询框来创建自定义查询。但是在我们想要创建报告的本地报告(.RDLC)中,我们应该为报告设置一个设计的数据集。

enter image description here

问题是,当我们有100个报告时,我们还应该有100个数据集。目前我们使用带有这些字段的数据集(F1,F2,F3,...,F100),在将数据表绑定到报告之前,我们更改名称数据表列。但它的可读性很低。

我想问一下,有更好的方法可以解决这个问题吗?

由于

3 个答案:

答案 0 :(得分:3)

最好的解决方案是对数据集进行分组。 您可以根据业务对数据集进行分组。例如POLICY.xsd,USER.xsd,INVOICE.xsd并将其他数据集添加到xsd文件中。

例如在visual studio中,您会看到10个数据集文件。但是每个项目都有不同的数据表。

第二次升级是你会写出更好的t-sql。通常选择类似报告的列时,您将使用相同的数据表。

例如,报告包括5个columsn A1,A2,A3,A4,A5 B报告包括6列A1,A2,A3,A4,A5,A6

对于这些报告,您将使用B报告的数据表

答案 1 :(得分:1)

我可能需要更多信息才能提供帮助 - 您真的说您的数据集标记为F1,F2,F3,......并且您现在需要绑定到实际标有列的表(例如)Id,CustType,IsActive,......?

如果是这种情况,那么我建议使用将每个字段名别名为F1,F2,...的视图。这听起来像原始问题一样多,但一切都可以自动完成。

可以通过脚本创建这100个视图。可以通过运行一些智能T-SQL来生成此脚本,该T-SQL获取存储在SQL Server中的架构数据并输出所需的脚本。

查看How can I get column names from a table in SQL Server?即可开始使用。

您可能需要在T-SQL中使用游标来遍历架构数据并输出脚本以创建视图。

最后,如果您需要以相同的方式修改100个SSRS报告中的每一个,那么不要忘记每个报告都存储在报告定义语言(XML)中,这样您就可以编写一个读取每个XML的小实用程序文件并进行必要的更改。在让新实用程序松散之前,不要忘记先备份这些文件。

我希望这一切都有所帮助,而且答案还没来得太晚。

答案 2 :(得分:0)

虽然很高兴看到Minimal, Complete, and Verifiable example我也会试一试。

您可以做的是,在您的数据库中创建一个表,将您需要的数据与每个DataSet相关联,然后循环遍历该数据。

  

ID .............字段................................ ..........查询类型..............类SqlQuery / StoredProcedure的

     

1 ............... ProducID,ProductName ............ 0 ............... ............... SP_GetBasicProductInfo

     

2 ............... OrderID,ProductId ..................... 0 ...... ........................ SP_GetOrderIdsByProduct

     

3 ............... CustomerID,客户名称.... 1 ....................... .......从Northwind.Customers

中选择CustomerID,CustomerName

这样,您可以获取要映射的Fields和要执行的sql查询。 您最终可以将此信息传递给Data Access Layer以执行查询并填写所需的DataSet。

您可以尝试将所有内容转换为字符串,甚至可以为每种类型使用分隔符,例如int|ProductID,string|ProductName