第1章 通过纵向扩展来实现一个报表内定义出多张报表
当需要批量打印报表时,可以通过纵向扩展实现一个报表内定义多张报表的方法来达到批量打印报表的目的,其中最关键的是设置单元格分页符属性为“格下分页”。
1.1 样例一
以商品标签批量打印实现的步骤为例。商品标签格式如图1所示
1)在报表设计器中新建一个空白报表,新建in类型的参数ids,使用户可以通过传递参数值来有选择的打印商品标签,参数格式为逗号分隔,设置参数类型为“字段”,如图2所示
2)新建复杂SQL数据集,输入SQL:
Select product.product_id,product.product_name,product.quantityperunit,product.unitprice,suppliers.city
from product,suppliers where product.supplierid = suppliers.supplierid and {# product.product_id in ($ids)#}
解析后确定。结果如图3所示
3)通过单元格合并、改变高宽等操作,设计表格布局为商品标签布局,并且设置单元格A1为隐藏,扩展方向为:纵向扩展,分页符为:格下分页。设计结果如图4所示
4)将数据集字段拖入相应的表格中。
a) 单元格A1放入字段product_id,设置为查询,即A1=select( 'ds1', 'PRODUCT_ID')
b) 单元格C1放入字段product_name,设置为取值,即C1 =get( 'ds1', 'PRODUCT_NAME')
c) 单元格C2放入字段quantityperunit,设置为取值,即C2 =substring(get('ds1','quantityperunit'),0,1)
d) 单元格E2放入字段city,设置为取值,即E2=get( 'ds1', 'CITY')
e) 单元格G2设置为图片,插入图片导入本地图片
f) 单元格C3放入字段quantityperunit,设置为取值,即C3=substring(get('ds1','quantityperunit'),1,2)
g) 单元格E3放入字段product_id,设置为取值,即E3=get( 'ds1', 'PRODUCT_ID')
h) 单元格B5放入字段unitprice,设置为取值,即B5=get( 'ds1', 'UNITPRICE')
i) 单元格F5设置为条形码CODE 128,上边距为0.1,宽度为0.05,行依赖为A1
结果如图5所示
5)设置每个单元格边框样式,使表格样式与商品标签样式一致。结果如图6所示
6)设置字体样式,标签名加粗显示,价格设置字体大小为28及字体颜色,结果如图7所示
9)发布的服务端进行查看打印,显示效果如图10所示,打印效果如图11所示
1.2 样例二
以学生成绩单为例,看一下报表的定义过程:
报表最左侧,一个合并单元格,按照学生的序号纵向扩展,而报表中‘公共学位课’、‘专业学位课’、‘非学位课’等都是纵向扩展的,一个学生可以有多门各种分类的课程。
该报表设置标题表头等属性后,在打印时,即可实现多个学生成绩单的一次性打印。
效果如下: