见下图。仓库和客户是通过查询填充的下拉列表。年份是文本字段。这两个表显示由报告参数驱动的数据集中的数据。有没有办法根据Customer下拉列表的每个成员重复这两个表?最好是在第二张表之后有一个分页符。
答案 0 :(得分:1)
我通常使用子报告来执行此操作。您可以创建包含表或单个子报表的单个子报表。个人方法可能有助于分页等,这是我的方式。
第1步:为第一张表创建报告。 由于你没有说明每张桌子的作用,我会为了说明而做一些。
关键是要创建一个子报表,只显示单个表中所需的信息。因此,在您的情况下,这可能意味着我们只需要传递一个参数CustomerID
。您可能需要传递更多,例如仓库,但我不知道......
在我编写的场景中,让我们假设报告显示了客户联系人,因此我们创建了一个子报告(让我们称之为subCustomerConacts
)。它有一个参数pCustomerID
和一个数据集dsCustomerContacts
。查询可能看起来像SELECT * FROM CustomerContacts WHERE CustomerID = @pCustomerID
。添加显示数据所需的任何表格/文本框等。
通过手动输入CustomerID
来测试此子报表第2步:为第二个表创建报告。
再次完全相同,创建一个新的子报表。我们称之为subCustomerOrders
。重复上述操作,直到您最终得到另一个可以显示订单详细信息(或您需要的任何内容)的报告。
最后,创建主报告。 这基本上就是你在参数等问题中描述的内容。
现在添加这个会调用子报告的位。
创建一个数据集(让我们称之为dsCustomerLoop
),其中包含SELECT DISTINCT CustomerID FROM myCustomers WHERE CustomerID IN (@myCustomerParameter)
在报告中添加一个表格,1列宽并拉伸它,使其宽度足以容纳子报告。
将数据集设置为指向dsCustomerLoop
右键单击详细信息行中的单元格,然后执行"插入行 - >内部组 - 下面"。你不应该有两个细节行。
接下来,右键单击顶部详细信息行并执行"插入 - >子报表"
右键单击新插入的子报表控件,然后选择"属性"。
从下拉列表中选择您的第一个SubReport 单击左侧的参数, 点击"添加"并选择CusomterID参数,将其值设置为CustomerID字段。
在秒行上重复此过程,选择秒子报告。
您可能还想在表格中添加第3行,您可以在此处插入一个矩形,并设置分页符以在每个子报表后强制新页面。
那是它。报表运行时,每个客户将生成两行,每行包含一个子报表。
我希望这一点已经足够清楚了,我已经匆匆忙忙地通过它了,但如果有什么不清楚的地方,请告诉我,我会提供更清晰的解决方案。