我正在构建一个包含两个列表的分页报告,每个列表都与数据集中的不同表相关联。这些表没有直接关系,因为它们都是单独的事实表,但它们共享一个公共字段:程序名称。每个列表都包含按此字段分组的视觉效果。
我想要实现的目标:
报告的每一页都应显示同一营销计划名称垂直堆叠的两个列表。
例如:
当前行为:
我真的很难弄清楚这一点,并且真诚地感谢更有经验的人提供的任何帮助。谢谢!
我通常构建这样的东西的方法是使用主(主)报告和子报告。
这是根据记忆完成的,因此可能不是 100% 准确,但应该足够接近以遵循
子报表将接受一个参数,在您的情况下可能是程序名称,并且只能显示该单个程序名称的数据。
因此,从构建此报告开始,根据您的描述,它只是一个页面,假设它有一个名为
prog_name
的参数。构建您的报告对象/表格/图表或其他内容,并确保您的数据集查询仅返回特定参数值的数据。因此,在您的情况下,您可能有两个数据集,每个数据集对应一个报表对象,查询将类似于 SELECT * FROM myFirstTable WHERE progname = @prog_name
.
通过传递不同的参数值来测试报告,一旦您满意,就保存报告。假设它保存为
_sub_MyReport
。
现在创建一个新报告。创建一个仅返回程序名称列表的数据集。所以查询可能就像
SELECT DISTINCT progname FROM myTable ORDER BY progname
一样简单。
现在向报告添加一个表格并删除除一列之外的所有列。使剩余的列足够宽以容纳您的子报表(只要小于正文宽度就可以了),高度并不重要。
接下来,我们需要将此表与您的数据集关联起来,因此您可以在表属性中执行此操作,也可以将
progname
列从数据集中拖动到我们的单个列上。
现在在表格“单元格”(文本框)中删除任何已存在的内容(如果将字段拖动到上面的表格),然后右键单击此文本框并执行插入/子报表。插入子报表控件后,右键单击它,然后单击属性,然后在“要使用的报表”中选择我们之前创建的子报表,
_sub_MyReport
。在参数选项卡上选择参数 prog_name
(如果下拉列表中未显示,则输入该参数),然后对于值,单击文本字段右侧的按钮并导航到您的数据集并选择 progname
领域。
最后,在主设计器下方的行组面板中,右键单击行组(应该只有一个),然后在属性中将分页符设置为“Between”。
应该是这样。
因此,当您运行报告时,主报告将查询数据库并返回程序名称列表(例如,根据您的示例,其中有 3 个),并且对于每一行,它将生成一个表行。每个表行中都会有一个子报表,
progname
的值将依次传递给每个子报表。