Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用数据集进行Microsoft报告_C#_C# 4.0_Reporting Services_Reporting_Microsoft Reporting - Fatal编程技术网

C# 使用数据集进行Microsoft报告

C# 使用数据集进行Microsoft报告,c#,c#-4.0,reporting-services,reporting,microsoft-reporting,C#,C# 4.0,Reporting Services,Reporting,Microsoft Reporting,当我们使用SSRS创建报告时,我们可以使用数据集窗口中的查询框来创建自定义查询。但在本地报表(.RDLC)中,当我们想要创建报表时,应该为报表设置一个设计的数据集 问题是当我们有100个报表时,我们也应该有100个数据集。目前,我们使用带有这些字段(F1、F2、F3、…、F100)的数据集,在将数据表绑定到报表之前,我们会更改数据表列的名称。但它的可读性很低 我想问,有没有更好的方法来解决这个问题 谢谢我可能需要更多信息来提供帮助-你真的是说你的数据集上有标记为F1、F2、F3等的字段吗。。。

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

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

我想问,有没有更好的方法来解决这个问题


谢谢

我可能需要更多信息来提供帮助-你真的是说你的数据集上有标记为F1、F2、F3等的字段吗。。。您现在需要绑定到实际的表,这些表的列标记为(例如)Id、custype、IsActive等等

如果是这种情况,那么我建议使用将每个字段名别名为F1、F2、,。。。这听起来可能和你原来的问题一样多,但一切都可以自动化

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

请查看以开始

您可能需要在T-SQL中使用游标来循环模式数据并输出脚本以创建视图

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


我希望所有这些都会有所帮助,而且答案不会来得太晚

最好的解决方案是对数据集进行分组。 您可以按其业务对数据集进行分组。例如POLICY.xsd、USER.xsd、INVOICE.xsd和add to other dataset to to the xsd文件

例如,在VisualStudio中可以看到10个数据集文件。但是每个项目都有不同的数据表

第二个升级是您将编写更好的t-sql。当您为类似报告选择列时,您将使用相同的数据表

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


对于这些报告,您将使用B report的datatable

我必须承认,我不完全理解目前提供的信息的问题,但这里有一个解决方案,它可能会给您带来巨大的好处

您是否尝试过从存储过程创建报告?通过这种方式,RDLC文件将不包含查询,而是查看存储过程中查询的定义,并在RDLC文件中创建数据集。然后在运行时,以代码形式执行存储过程,并将返回的数据传递到RDLC文件中执行


这样做的好处是,查询被封装为数据库对象,您的项目中不会有一百万个数据集,您可以从报表中分离查询,因此如果您有6个版本的同一报表,它们都使用相同的字段,但使用不同的WHERE子句,例如,您可以只使用一个报告(并在运行时调用相关的存储过程)。

尽管看到一个报告会很好,但我也会尝试一下

您可以做的是,在数据库中创建一个表,将所需的数据与每个
数据集相关,然后循环使用该数据

i、 e

ID……….字段……….查询类型……….SqlQuery/StoredProcess

1………..ProducID,产品名称………..0………..SP_GetBasicProductInfo

2…………订单ID、产品ID…………0…………SP_GetOrderIdsByProduct

3………..CustomerID,CustomerName…1………..从Northwind选择CustomerID,CustomerName。客户

等等

通过这种方式,您可以获得要映射到的字段和要执行的sql查询。 最后,您可以将此信息传递到
数据访问层
,以执行查询并填写所需的数据集


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

,谢谢,但我知道您所说的一切,我尝试了其中一些。所以我寻找一个更好的解决方案,你同意在运行时创建动态数据集并将其设置为报告的数据源的解决方案吗?我真的无法理解你的问题。您想知道您的GUI是否编译过度,或者代码的可读性是否需要提高?无论是哪种方式,它都会对一些代码片段和/或屏幕截图有很大帮助。