第1章 需求描述
具体需求如下:报表1显示单位的信息,报表2显示该单位的明细表,要求这两张报表定义在一个报表文件中,打印时循环打印多家单位,第一页只打印第一家单位的信息,第二页打印该单位的明细表,明细表的内容可能会很多,要求明细表分页时,在明细表的第二页显示对应的表头信息,依次循环打印多个单位的信息和明细信息。
单位信息报表样式如下:
单位明细表多页时样式如下:
第一页的样式:
第二页的样式:
第2章 如何定义此需求的报表
2.1 报表定义
1)定义报表1,样式如下:
在报表设计器中新建一个空白报表,新建数据集ds1,定义报表1对应的数据集。
2)在设计器中通过单元格合并、改变高宽、对齐方式、边框等操作,设计报表1的布局,由于显示时需要每个单位的信息显示一页,这里设置A1为隐藏行,合并A列的所有行,布局定义如下:
3)将数据集字段拖入相应的表格中
a) 单元格A1放入字段AAB003(单位代码对应的字段),设置为分组,即=group( 'ds1', 'AAB003', null, 'AAB003 asc'),单元格扩展方向属性为纵向扩展
b) 单元格C2放入字段BZE062,设置为取值,即=get( 'ds1', 'BZE062') ,单元格行依赖属性为A1
c) 单元格F2设置为条形码CODE 39,行依赖为A1
d) 单元格I8设置为=$currentTimes
e) 其它单元格的设置参考C2单元格,拖放对应的字段到单元格,设置为取值,单元格行依赖属性为A1 4)设置标题、表头
a) 设置第1行类型为标题
b) 设置第2—5行类型为表头
结果如下图所示:
5)报表1定义完成,发布查看效果
发布报表,查看效果如下:
6)定义报表2,样式如下:
在报表1的报表定义中,新建报表2的数据集ds2。
7)在设计器中通过添加行列、单元格合并、改变高宽、对齐方式、边框等操作,设计报表2的布局,由于显示时需要每个单位的明细信息显示一页,这里在A1后面添加一列,设置为隐藏行,合并A列的所有行,布局定义如下:
8)将数据集字段拖入相应的表格中
a) 合并A列的所有行所在的单元格
b) 设置单位代码、结算月份、单位名称、流水号、分中心、社保经办人、打印日期等,对应的值所在的单元格公式和报表1对应的内容一致,都取ds1数据集对应的字段值,并11、12、17行所有单元格行依赖A1
c) 第13—15行单元格行依赖A1
d) 单元格B16放入ds2数据集的字段BAZ621(单位代码对应的字段),设置为查询,即=select( 'ds2', 'BAZ621', {&get('ds2', 'AAB003') = CellRef('A1')}),过滤条件为ds2数据集中的字段AAB003的值等于A1单元格对应的值,单元格扩展方向属性为纵向扩展,行依赖A1
e) 单元格C16放入字段SEQNUM,设置为取值,即=get( 'ds2', 'SEQNUM') ,单元格行依赖属性为B16
f) 第16行其它单元格的设置参考C16单元格,拖放对应的字段到单元格,设置为取值,单元格行依赖属性为B16
g) 设置A和B列的宽度为0,使所有单元格都在虚线范围内,以便打印时宽度不会超出纸张的范围
9)设置标题、表头
a) 设置第10—12行类型为标题
b) 设置第13—15行类型为表头
结果如下图所示:
10)报表2定义完成,发布查看效果
发布报表,查看效果如下:
2.2 打印结果
打印效果如下图所示: