在visual studio 2010中,使用水晶报告。我想为每个新值生成一个新报告。这样,所有报告都可以一起打印。例如,如果我作为PDF打印,它将是一个用于X个报告的pdf文件。但是,每个报告看起来应该是一个完全独立的生成报告。因此,它拥有自己独特的页眉标题值,页码等
我可以说一个订单清单。此列表是所有订单的子集。我想使用代码集列表是什么。然后,我希望Crystal Reports为每个订单生成一个报告,并让它们一个接一个。
例:
-Order1第1页至第3页(Order1唯一数据,具有自己独立的报告标题和页面标题)
-Order2第1页至第2页(Order1唯一数据,具有自己独立的报告标题和页面标题)
-Order3第1页至第4页(Order1唯一数据,具有自己独立的报告标题和页面标题)
-Etc ..
我已经想出如何在一个参数中向报表发送多个值,如果将字段放入详细信息部分(Order1,Order2,Etc),这些都将显示。如果将字段放入标题部分,则仅显示第一个值。但是,这并没有为每个新值提供新的报告。
我不知道参数是否是正确的选项或如何操作。分组似乎不太正确,因为它只是在同一报表中对值进行分组。我不知道子报告是否是正确的,但我不需要一个总报告打印出来。
修改 更改了标题,添加了更多信息。
答案 0 :(得分:0)
您可以使用子报告执行此操作。但是在子报表页面页眉/页脚不可用。它们将在主报告中设置。如果子报表不适合您,您可以创建一个小应用程序,它将逐个运行报表并打印它们或将它们导出为PDF,并将结果合并到一个大的PDF中。市场上有第三方工具,可以在这种情况下使用。如果这是一个选项,请告诉我,我会发布链接。
带有子报告的主报告将是最简单的解决方案,不需要额外的软件。
答案 1 :(得分:0)
这称为报告爆发。 http://kenhamady.com/bookmarks.html中列出的至少一个第三方Crystal Reports桌面计划程序提供了该功能。
HTH, - ido
答案 2 :(得分:0)
我花了一段时间,但我弄清楚了,这是我第一次尝试使用水晶报告。 Crystal报告可能是一个非常具有挑战性的项目!简而言之,我试图重新创建一个非常古老的水晶报告,它具有很多功能。
首先,我试图让用户决定是否打印一个订单或几个订单,所有用户在生成水晶报表之前定义。然后使用代码将该数据发送到报告。这样,用户只需点击一次按钮即可打印几个不同报告的内容。
从开始到现在,您必须确保连接到数据源。在我的例子中是一个SQL数据库。这给了我很多问题!也许是由于我们旧的ERP软件不得不使用非常旧的sqlserv32.dll。我使用了OLE DB连接,选择了SQL Server Native Client 10.0(适用于SQL Server 2008)。然后我必须在每个客户端安装Crystal Runtime 32位和Crystal Runtime 64位以及sqlncli.msi,这样就可以在客户端工作站上运行水晶报告。
我的代码将参数发送到水晶报告。
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。我使用了Order SQL字段并使用了公式:
{MySQLTable.MySQLField} in split({?@MyCrystalReportParameter}, ",")
在CR中,您必须为您发送的参数创建一个组,并希望为其创建多个报告。对于您传递的每个值,这些组将允许在上一个报告的末尾添加新报告,在我的情况下,它是Orders。这为每个新值(我的订单号)为页眉和报表实体提供了不同的数据。
在CR中,我使用了Group Expert并创建了一个Group。该组被设置为我的SQL订单字段。
要为每个不同的订单报告重置页码我禁止以下部分:报表页眉,组页眉,详细信息部分,报表页脚,页脚。我使用Page Header for My Report Headers。我在各个部分使用了Group Footer,根据需要插入了附加组页脚。这些包含我的各个部分和子报告,其中显示了附加数据的表格,如货件清单,零件清单等。
在我的论坛的群组专家中订单数据库字段我在每个页面上的1个可见群组和重复群组标题后检查了新页面。
在“分页”选项卡上的“最后一组页脚”专家节中,我选择了“重置页码后”。在Common选项卡上一起检查Keep可能也很重要。
对于每个SubReport,它基本上包含我的动态数据表,这些表将根据数据库中的数据行数增长。我右键单击SubReport并选择子报告链接,选择该字段并将其添加到字段以链接到。在下面的两个下拉菜单中选择它并确保选中基于字段在SubReprot中选择数据。在我的SubReport中,我必须创建一个组来以某种方式对我的数据进行排序,但是抑制了组部分并且只使用了ReportHeader和Detail Sections。