报表按内容类别分页展现问题
最近发现一些客户的需求,用字符串组参数传递给报表某个参数的若干值,然后报表根据传过来的值分类,每一个分类在页面上形成一个报表,并且占一页,导出 excel 的时候也分页显示,下面就用一个简单的小例子实现上面的需求。
第一步:新建一张报表,连接 demo 数据源。
新建一张报表,报表连接 sql 数据源,给报表增加一个参数 arg1 ,类型为字符串组,然后增加一个数据集 ds1 ,数据集的 sql 为: SELECT 类别 . 类别 ID, 类别 . 类别名称 , 类别 . 说明 FROM 类别 ,给数据集增加两个参数,参数的样式如下图所示:
然后增加数据集的检索条件:类别 . 类别 ID in (?) or ? is null ,最后数据集的 sql 样式如下图所示:
第二步:设计报表
设计一张如下图所示的报表,报表的上面和下面都有一个空白行:
第三步:设置行后分页和左主格
设置 A3 、 B3 、 C3 单元格的左主格为 A2 ,然后设置第三行为行后分页,如下图所示:
第四步:制作参数模板
新建一张可以填报的普通报表,连接 demo 数据源,然后新建一个数据集 ds1 ,数据集的 sql 为: SELECT 类别 . 类别 ID, 类别 . 类别名称 FROM 类别,然后如下图所示,设置 B1 单元格的编辑风格为下拉数据集,具体的样式如下图所示:
然后设置 B1 的变量名为 arg1 ,设置的方法见下图:
第五步:保存并发布报表
保存主报表名字为 fenye.raq ,参数模板的名字为 fenye_arg.raq ,然后在设计器中发布主报表,并选择相应的参数,就能看到下面两幅图的效果:
这样就实现了根据类别分类,每个类别在一页纸上展现,导出的时候也会跟页面上一样,分多个 sheet 页展现,上面的需求也就实现了。