2014-02-05 27 views
0

在visual studio 2010中,使用水晶报告。我想为每个新值生成一份新报告。这样所有的报告都可以一起打印。例如,如果我以PDF格式打印,它将成为X个报告的一个pdf文件。但是,每份报告都应该看起来像是一份完全独立的报告。所以它有自己独特的页面标题值,页码等。生成多个水晶报告作为一个打印输出或文件

我已经让我们说一个订单列表。该列表是所有订单的子集。我想用代码设置那个列表是什么。然后,我希望Crystal Reports为每个订单生成一个报告,并让它们一个接一个。

实施例:
-Order1页1到3(共Order1唯一的数据,与自己的单独的报告报头&页头)
-Order2页1到2(共Order1唯一的数据,与自己的单独的报告报头&页头)
-Order3 1至4页(共Order1独特的数据,有自己独立的报表页眉&页头)
-Etc ..

我想通了如何倍数值发送到报告中的一个参数,如果该字段是pu,这些将全部显示t放入细节部分(Order1,Order2等)。如果该字段放入标题部分,则只显示第一个值。但是,这并没有为我提供每个新价值的新报告。

我不知道如果参数是正确的选项或如何这样做。分组看起来并不完全正确,因为它只是在同一个报表中分组值。我不知道子报表是否是正确的,但我不需要总计打印出主报表。

编辑 更改标题,添加了一些信息。

+0

你想破解一个报告吗? – craig

回答

0

我花了一段时间,但我想通弄明白了,这是我第一次尝试使用水晶报表。 Crystal报告可能是相当具有挑战性的项目实施!简而言之,我试图重新创建一个非常古老的水晶报告,它具有很多功能。

首先我试图让用户决定是否打印一个订单或几个订单,所有用户在水晶报告生成之前定义。然后使用代码将该数据发送到报告。这将允许用户通过点击一次按钮来基本打印几个不同的报告。

在开始和现在之间,你必须确保你连接到你的数据源。在我的情况是一个SQL数据库。这给了我很多问题!也许是由于我们以前的ERP软件不得不使用非常旧的sqlserv32.dll。我使用了OLE DB连接,选定的SQL Server Native Client 10.0(用于SQL Server 2008)。然后,我必须在每个客户端上同时安装Crystal Runtime 32bit和Crystal Runtime 64bit和sqlncli.msi,这样Crystal Reports才能在客户端工作站上运行。

我的代码发送参数到水晶报告。

string OrderList = ""; 

OrderList += "18528-7" + ","; 
OrderList += "18527-2" + ","; 
OrderList += "18532-2" + ","; 

等等。用循环可以更好地完成,只是这样做了测试目的。

//Set Crystal Report Parameter. This parameter must be created in crystal reports designer with the same name. The parameter type must match your code type, ie a string. 
CrystalReport11.SetParameterValue("@MyCrystalReportParameter", OrderList); 

在Crystal Reports(CR)中接受使用Select Expert的多值参数。我用我的订单SQL领域和所使用的公式:

{MySQLTable.MySQLField} in split({[email protected]}, ",") 

在CR,你必须为你创建发送的参数组,要创建多个报告。这些小组将允许在上次报告结束时为您传递的每个价值都附上一份新报告,在我的案例中就是Orders。这为每个新值(我的订单号)提供了不同数据的页眉和报告主体。

在CR中,我使用Group Expert并创建了一个Group。该组被设置为我的SQL Order字段。

要为每个不同的订单报告重置页码我抑制了以下部分:报表标题,组页眉,详细信息部分,报表页脚,页脚。我使用页眉作为我的报告标题。我为我的各个部分使用组页脚,根据需要插入其他组页脚。这些载我这显示,如发货单,零件清单等

在组专家对我的集团通过订单数据库字段我签新页面后1个可见集团和重复组附加数据的表格各个部分和子报表每页上的标题。

章节专家在页面选项卡上的最后组页脚我选择了重置页码后。在公共选项卡上检查保持在一起也很重要。

对于每个包含我的动态数据表的子报表,这些数据表的增长量取决于数据库中的数据行数。我右键点击SubReport并选择SubReport Links,选中该字段并将其添加到字段以链接至。在下面的两个下拉列表中选择它并确保在SubReprot中选择基于字段的数据已被选中。在我的SubReport中,我不得不创建一个组以一定的方式来订购我的数据,但是抑制了组部分,并且只使用了ReportHeader和Detail Sections。

0

您可以使用子报表执行此操作。但是,在子报表页面页眉/页脚不可用。它们将在主报告中设置。如果子报表不适合您,您可以创建一个小应用程序,它将逐个运行报表并打印或将其导出为PDF,并将结果合并为一个大的PDF。市场上有第三方工具,可以在这种情况下使用。让我知道如果这是一个选项,我会张贴链接。

主报告与子报表将是最简单的解决方案,不会需要额外的软件。